Cod sursa(job #260056)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 16 februarie 2009 14:33:58
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#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;
}