Pagini recente » Cod sursa (job #1841428) | Cod sursa (job #465784) | Cod sursa (job #2738511) | Cod sursa (job #1199945) | Cod sursa (job #1723823)
#include <cstdio>
#define MAXN 200000
using namespace std;
int v[2*MAXN+1];
int main()
{
freopen("buline.in", "r", stdin);
freopen("buline.out", "w", stdout);
int n, pos, posmax, lung, t, secv;
long long maxs, s;
scanf("%d", &n);
for(int i=1;i<=n;++i)
{
scanf("%d%d", &v[i], &t);
if(!t) v[i]*=-1;
v[i+n]=v[i];
}
s=v[1];
secv=1;
maxs=s;
pos=posmax=lung=1;
for(int i=2;i<2*n;++i)
{
if(secv==n)
{
s-=v[i-secv];
secv--;
while(v[i-secv] < 0 && secv!=0)
{
s-=v[i-secv];
secv--;
}
pos=i-secv+1;
}
if(s+v[i] > v[i])
{
s+=v[i];
secv++;
}
else
{
secv=1;
pos=i;
s=v[i];
}
if(pos <= n)
{
if(s > maxs)
{
maxs=s;
posmax=pos;
lung=secv;
}
}
}
printf("%lld %d %d",maxs, posmax, lung);
return 0;
}