Pagini recente » Cod sursa (job #111353) | Cod sursa (job #188082) | Monitorul de evaluare | Istoria paginii preoni-2006/finala/clasament-10 | Cod sursa (job #260056)
Cod sursa(job #260056)
#include<fstream.h>
#include<values.h>
ifstream f("buline.in");
ofstream g("buline.out");
int i,n,k,x,y,z,a[2]={-1,1},m,v[200001],t[200001],nr,j,l,d,max[200001],p[200001],m1,mm,p1,l1;
int main(){
f>>n; nr=1;
i=0;p[0]=1;
f>>x>>y;
x=x*a[y];
v[1]=x;
t[1]=v[1];max[1]=v[1];
mm=v[1];p1=1;l1=1;
for(i=2;i<=n;i++){
f>>x>>y;
x=x*a[y];
v[i]=x;
if(max[i-1]+v[i]>=v[i]){
max[i]=max[i-1]+v[i];
p[i]=p[i-1];}
else {
max[i]=x; p[i]=i;}
if(max[i]>mm)
{
mm=max[i];p1=p[i];l1=i-p1+1;
}
}
max[1]=v[1];
t[1]=v[1];p[1]=1;
for(i=2;i<=n;i++){
max[i]=max[i-1]+v[i];
if(max[i]>t[i-1]){
t[i]=max[i];
p[i]=i;
}
else
{t[i]=t[i-1];p[i]=p[i-1];}
}
m1=v[1];
for(i=2;i<=n;i++)
if( m1<max[n]-max[i-1]+t[i-1]){
m1=max[n]-max[i-1]+t[i-1];
d=i;
l=n-i+1 +p[i-1];}
if(m1 >mm)
g<<m1<<' '<<d<<' '<<l;
else
if(mm>m1)
g<<mm<<' '<<p1<<' '<<l1;
else
{ g<<m1<<' ';
if(d>=p1)
g<<p1<<' '<<l1;
else g<<d<<' '<<l;}
return 0;
}