Pagini recente » Cod sursa (job #2298598) | Cod sursa (job #954738) | Cod sursa (job #2328206) | Cod sursa (job #1835872) | Cod sursa (job #800430)
Cod sursa(job #800430)
#include <iostream>
#include <deque>
#include <fstream>
#include <algorithm>
using namespace std;
int v[400005],Suma;
deque<int> dp;
int main()
{
int n,x,p,maxim=-1<<30,start,dupa;
ifstream f("buline.in");
ofstream g("buline.out");
f>>n;
for(int i=1;i<=n;i++)
{
f>>x>>p;
if(p==0)
{
v[i]=-x;
v[n+i]=-x;
}
else
{
v[i]=x;
v[n+i]=x;
}
}
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())%n+1;
}
}
g<<maxim<<" "<<start<<" "<<dupa;
return 0;
}