Pagini recente » Cod sursa (job #1542953) | Cod sursa (job #1317937) | Cod sursa (job #2702416) | Cod sursa (job #2155426) | Cod sursa (job #2110727)
#include <fstream>
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
int n,x,o,v[200210],s[200010],nr,inc,I,N,sum,sm,st,dr;
struct chestie{
int S,ind;
}deq[200010];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x>>o;
v[i]=x;
if(o==0)
v[i]=v[i]*(-1);
v[n+i]=v[i];s[i]=s[i-1]+v[i];
}
for(int i=n+1;i<=2*n;i++)
s[i]=s[i-1]+v[i];
inc=1;nr=1;
deq[++st].S=0;deq[st].ind=0;
dr=1;
for(int i=1;i<=2*n;i++)
{
sum=s[i]-deq[st].S;
if(sum>sm)
sm=sum,I=deq[st].ind+1,N=i-I+1;
if(i==n+deq[st].ind)
st++;
while(deq[dr].S>s[i]&&dr>st)
dr--;
deq[++dr]={s[i],i};
}
cout<<sm<<' '<<I<<' '<<N<<'\n';
return 0;
}