Pagini recente » Cod sursa (job #69089) | Cod sursa (job #1000571) | Cod sursa (job #2538799) | Cod sursa (job #2537594) | Cod sursa (job #2947454)
#include <fstream>
#include <deque>
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
deque <int> D;
int A[400001],n;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x;
cin>>A[i]>>x;
if(x==0) A[i]=(-1)*A[i];
A[i+n]=A[i];
}
n=n*2;
for(int i=1;i<=n;i++)
A[i]=A[i-1]+A[i];
int smax=0,st,lmax;
for(int i=1;i<=n;i++)
{
while(!D.empty()&&A[i]-A[i-1]>=A[i]-A[D.back()])
D.pop_back();
D.push_back(i-1);
while(!D.empty()&&D.front()<i-n/2)
D.pop_front();
if(smax<A[i]-A[D.front()])
{
smax=A[i]-A[D.front()];
st=D.front()+1;
lmax=i-D.front();
}
}
cout<<smax<<" "<<st<<" "<<lmax;
return 0;
}