Cod sursa(job #2394032)

Utilizator DanutAldeaDanut Aldea DanutAldea Data 1 aprilie 2019 11:48:51
Problema Buline Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <deque>
#include <iostream>
using namespace std;

ifstream fin("buline.in");
ofstream fout("buline.out");

int n,i,x,v[400001],sol,l,p,sum,st,dr;

int main(){
    fin>>n;
    sol=-100001; p=-1; l=1;

    for(i=1;i<=n;i++){
        fin>>v[i]>>x;
        if(x==0)
            v[i]=-v[i];

        if(sol<v[i]){
            sol=v[i];
            p=i;
        }

        v[i+n]=v[i];

        cout<<v[i]<<" ";
    }
    cout<<"\n";

    st=1;
    dr=1;
    sum=v[1];
    for(i=2;i<=2*n;i++){
        while(dr-st>=n-1){
            sum-=v[st];
            st++;
        }

        if(v[i]>sum+v[i]){
            st=i;
            dr=i;
            sum=v[i];
        }else{
            sum+=v[i];
            dr++;
        }

        if(st>n)
            break;

        if(sol<sum){
            sol=sum;
            p=st;
            l=dr-st+1;
        }else
            if(sol==sum && p>st){
                p=st;
                l=dr-st+1;
            }
    }

    if(p>n)
        p-=n;
    fout<<sol<<" "<<p<<" "<<l;

    return 0;
}