Pagini recente » Cod sursa (job #1843502) | Cod sursa (job #800446) | Cod sursa (job #1770030) | Cod sursa (job #2767122) | Cod sursa (job #800412)
Cod sursa(job #800412)
#include <iostream>
#include <deque>
#include <fstream>
#include <algorithm>
using namespace std;
int v[200005];
deque<int> dp;
int main()
{
int n,x,p,maxim=-1<<30;
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,start,dupa;
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;
}