Pagini recente » Cod sursa (job #778906) | Cod sursa (job #205814) | Istoria paginii runda/cex_ph_5/clasament | Monitorul de evaluare | Cod sursa (job #1461851)
#include <cstdio>
using namespace std;
int x[200005];
int main() {
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
int i,n,a,b,stot=0,smax,sc,ic,sfm,im,smin,imin,sfmin,icmin,sc2,smax2;
scanf("%d\n",&n);
for(i=1; i<=n; i++)
{
scanf("%d%d\n",&a,&b);
if(b==1) x[i]=a;
else x[i]=-a;
stot+=x[i];
}
sc=sc2=smin=smax=x[1];
ic=icmin=imin=sfmin=im=sfm=1;
for(i=2; i<=n; i++)
{
if(sc+x[i]<x[i])
{
sc=x[i];
ic=i;
}
else
sc+=x[i];
if(sc>smax)
{
smax=sc;
im=ic;
sfm=i;
}
if(sc2+x[i]>x[i])
{
sc2=x[i];
icmin=i;
}
else
sc2+=x[i];
if(sc2<smin)
{
smin=sc2;
imin=icmin;
sfmin=i;
}
}
smax2=stot-smin;
if(smax>smax2)
printf("%d %d %d\n",smax,im,sfm-im+1);
else
printf("%d %d %d\n",smax2,(sfmin+1)%n,n-(sfmin-imin+1));
return 0;
}