Cod sursa(job #992514)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 2 septembrie 2013 00:19:23
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<cstdio>
#include<climits>
int n,v[200001],x[200001],s,in,d,smax=INT_MIN,imax,dmax,i,j,a,c;
FILE *f,*g;
int main(){
    f=fopen("buline.in","r");
    g=fopen("buline.out","w");
    fscanf(f,"%d",&n);
    imax=0;
    dmax=0;
    s=0;
    in=1;
    d=1;
    for(i=1;i<=n;i++){
        fscanf(f,"%d%d",&a,&c);
        if(c==1)
            v[i]=a;
        else
            v[i]=-a;
        x[i]=x[i-1]+v[i];
         if(s+v[i]>=v[i]){
            d++;
            s+=v[i];
            if(s>smax){
                smax=s;
                dmax=d;
                imax=in;
            }
        }
        else{
            s=v[i];
            in=i;
            d=1;
        }
    }

    i=1;
    while(i<=n && i<in){
        if(s+v[i]>=v[i]){
            d++;
            s+=v[i];
            if(s>smax){
                smax=s;
                dmax=d;
                imax=in;
            }
        }
        else{
            s=v[i];
            in=i;
            d=1;
            break;
        }
    i++;
    }
    fprintf(g,"%d %d %d",smax,imax,dmax);
    fclose(f);
    fclose(g);
    return 0;
}