Pagini recente » Cod sursa (job #416020) | Istoria paginii runda/marcel001/clasament | Cod sursa (job #2583185) | Cod sursa (job #3217762) | Cod sursa (job #800419)
Cod sursa(job #800419)
#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=0,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;
}