Cod sursa(job #214090)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 12 octombrie 2008 18:21:18
Problema Buline Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
long n,i,a[2000100],c,S,SM,is,ss,s,im,sm,sum,a1,ln,pm,min=2000000000,x;
int main()
{
 freopen("buline.in","r",stdin);
 freopen("buline.out","w",stdout);
 scanf("%ld",&n);
 for(i=1;i<=n;++i)
    {scanf("%ld%ld",&a[i],&c);
     if(!c)a[i]*=-1;
     s+=a[i];
     a[i]*=-1;
     if(a[i]>0&&a[i]<min){min=a[i];pm=i;}
    }
 SM=-2000000000;
 S=0;
 is=1;
 ss=0;
 im=0;
 sm=0;
 for(i=1;i<=n;++i)
    {if(S+a[i]>a[i]){ss=i;S+=a[i];}
                else{is=i;ss=i;S=a[i];}
     if(S>SM){SM=S;im=is;sm=ss;}}
 sum=s+SM;
 a1=sm+1;
 if(a1==n+1)a1=1;
 ln=n-(sm-im+1);
 if(ln==0)printf("%ld %ld 1\n",0-min,pm);
 else{x=a1+ln;if(x>n)x-=n;if(a[x]<0){++ln;sum-=a[x];}printf("%ld %ld %ld\n",sum,a1,ln);}
 return 0;
}