Cod sursa(job #1716132)

Utilizator ade_tomiEnache Adelina ade_tomi Data 11 iunie 2016 23:54:14
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<iostream>
#include<fstream>
#include<queue>
using namespace std;
int i,n,maxi,v[400004],l,sum,i1,poz,semn,s[400004];
deque<int> dq;
int main()
{

    ifstream cin("buline.in");
    ofstream cout("buline.out");
    cin>>n;
    for(i=1;i<=n;i++)
    {

        cin>>v[i]>>semn;
        if(semn==0)
            v[i]*=-1;
    }
    for(i=1;i<=n;i++)
        v[i+n]=v[i];
    for(i=1;i<=2*n;i++)
        s[i]=s[i-1]+v[i];
    dq.push_back(1);
    for(i=2;i<=2*n;i++)
    {

        if(i-dq.front()>n)
            dq.pop_front();
        if(s[i]-s[dq.front()]>maxi)
        {
            maxi=s[i]-s[dq.front()];
            poz=dq.front()+1;
            l=i-dq.front();
        }
        while(!dq.empty()&&s[i]<s[dq.back()])
            dq.pop_back();
        dq.push_back(i);
    }

    cout<<maxi<<" "<<poz<<" "<<l;
    return 0;

}