Cod sursa(job #800415)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 21 octombrie 2012 16:41:39
Problema Buline Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <deque>
#include <fstream>
#include <algorithm>
using namespace std;

int v[400005];
deque<int> dp;


int main()
{
    int n,x,p,maxim=0,start,dupa;
    ifstream f("buline.in");
    ofstream g("buline.out");
    f>>n;
    for(int i=1;i<=n;i++)
    {
        f>>x>>p;
        v[i]=x;
        if(p==0) v[i]*=-1;
        v[n+i]=v[i];
    }
    long long Suma=0;

    for(int i=1;i<=2*n;i++)
    {
        if(dp.size()==n)
        {
            Suma-=dp.front();
            dp.pop_front();
        }
        if(Suma+v[i]>v[i])
         {
            dp.push_back(v[i]);
            Suma+=v[i];
         }
         else
         {
            Suma=v[i];
            while(dp.size())
                dp.pop_front();
            dp.push_back(v[i]);
         }
        if(Suma>maxim)
        {
            maxim=Suma;
            dupa=dp.size();
            start=(i-dp.size()+1)%n;
        }
    }
    g<<maxim<<" "<<start<<" "<<dupa;
    return 0;
}