Cod sursa(job #2002028)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 18 iulie 2017 13:56:55
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int i,n,maxi,l,poz,x,s[1<<19],v[1<<19];
deque<int> dq;
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>v[i]>>x;
        if(!x) 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);
    }
    g<<maxi<<' '<<poz<<' '<<l;
    return 0;
}