Cod sursa(job #2110732)

Utilizator adiaioanaAdia R. adiaioana Data 21 ianuarie 2018 11:55:52
Problema Buline Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#define nm 400010
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
long long n,x,o,v[nm],s[nm],nr,inc,I,N,sum,sm,st,dr;
struct chestie{
long long S,ind;
}deq[nm];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>x>>o;
        v[i]=x;
        if(o==0)
            v[i]=v[i]*(-1);
        v[n+i]=v[i];s[i]=s[i-1]+v[i];
    }
    for(int i=n+1;i<=2*n;i++)
        s[i]=s[i-1]+v[i];
    inc=1;nr=1;
    deq[++st].S=0;deq[st].ind=0;
    dr=1;
    sm=-(10000*nm);
    for(int i=1;i<=2*n;i++)
    {
        sum=s[i]-deq[st].S;
        if(sum>sm)
            sm=sum,I=deq[st].ind+1,N=i-I+1;
        if(i==n+deq[st].ind)
            st++;
        while(deq[dr].S>s[i]&&dr>=st)
            dr--;
        deq[++dr]={s[i],i};
    }
    cout<<sm<<' '<<I<<' '<<N<<'\n';
    return 0;
}