Cod sursa(job #1409159)

Utilizator raddudjPogonariu Radu raddudj Data 30 martie 2015 13:49:31
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 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(dr=1; dr<=2*n&&st<=n; dr++) {
        sum += v[dr];
        if(sum<v[dr]||dr-st+2>n) {
            st=dr;
            sum=v[dr];
        }
        if(sum>maxim) {
            maxim=sum;
            if(st%n==0)
                start=n;
            else start=st;
            len=dr-st+1;
        }
    }
    printf("%d %d %d\n",maxim,start,len);
    return 0;
}