Pagini recente » Cod sursa (job #603584) | Cod sursa (job #494530) | Cod sursa (job #1264812) | Cod sursa (job #1730414) | Cod sursa (job #2008965)
#include<iostream>
#include<fstream>
#include<queue>
using namespace std;
ifstream fin("buline.in");
ofstream fout("buline.out");
int i,n,maxi,v[400004],l,sum,i1,poz,semn,s[400004];
deque<int> dq;
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>v[i]>>semn;
if(semn==0)
v[i]*=-1;
}
for(i=1;i<=n;i++)
v[i+n]=v[i];
for(i=1;i<=2*n;i++)
s[i]=s[i-1]+v[i];
dq.push_back(1);
for(i=2;i<=2*n;i++)
{
if(i-dq.front()>n)
dq.pop_front();
if(s[i]-s[dq.front()]>maxi)
{
maxi=s[i]-s[dq.front()];
poz=dq.front()+1;
l=i-dq.front();
}
while(!dq.empty() and s[i]<s[dq.back()])
dq.pop_back();
dq.push_back(i);
}
fout << maxi << ' ' << poz << ' '<< l;
return 0;
}