Cod sursa(job #1409178)

Utilizator raddudjPogonariu Radu raddudj Data 30 martie 2015 13:55:38
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int v[400010];

int main() {
    int n,x,y;
    freopen("buline.in","r",stdin);
    freopen("buline.out","w",stdout);
    scanf("%d",&n);
    for(int i=1; i<=n; i++) {
        scanf("%d%d",&x,&y);
        v[i]=x;
        if(!y)
            v[i]*=-1;
        v[n+i]=v[i];
    }
    ///v[n+1]=-10010;
    int sum=0,st,dr,maxim=v[1],len=1,start=1;
    st=1;
    sum=0;
    for(int i=2;i<=2*n-1;i++){
        if(sum+v[i]>v[i])
            sum+=v[i];
        else{
            sum=v[i];
            st=i;
        }
        if(sum>maxim) {
            maxim=sum;
            if(st%n==0)
                start=n;
            else start=st;
            len=i-st+1;
        }
    }
    printf("%d %d %d\n",maxim,start,len);
    return 0;
}