| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
正确的代码,虽然有点烦#include <iostream>
using namespace std;
int main() {
int n,ee;
int i,j,p,big,little,t;
int feifu;
int a[100001];
while(1) {
cin>>n;
if(n==0) break;
big=-10000; little=-10000;
for(i=1;i<=n;i++) {
cin>>ee;
if(ee>big) {little=big; big=ee;}
else if(ee>little) little=ee;
if(ee>=0) break;
}
if(i>n) { cout<<big+little<<endl; continue;}
if(i==n) {cout<<ee+little<<endl; continue;}
p=1; a[p]=ee; feifu=1;t=0;
for(;i<n;i++) {
cin>>ee;
if(ee>big) {little=big; big=ee;}
else if(ee>little) little=ee;
if(ee>=0) {
++feifu;
if(a[p]>=0) a[p]+=ee;
else {a[++p]=ee;++t;}
}
else {
if(a[p]<0) a[p]+=ee;
else {a[++p]=ee; ++t;}
}
}
if(feifu==1){cout<<a[1]+little<<endl; continue;}
if(t<=1 && feifu>1) {cout<<a[1]<<endl; continue;}
t=t/2+1;
while(t>2) {
for(i=1;i+2<=p;i=i+2)
if(a[i]+a[i+1]+a[i+2]>=a[i] && a[i]+a[i+1]+a[i+2]>=a[i+2]){
a[i]=a[i]+a[i+1]+a[i+2];
for(j=i+3;j<=p;j++)
a[j-2]=a[j];
p=p-2; --t;
break;
}
if(i+2>p) break;
}
big=a[1];little=a[3];
if(big<little) {t=big;big=little;little=t;}
for(i=5;i<=p;i=i+2) {
if(a[i]>big) {little=big;big=a[i];}
else if(a[i]>little)little=a[i];
}
cout<<big+little<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator