Pagini recente » Cod sursa (job #2498466) | Cod sursa (job #500322) | Cod sursa (job #607960) | Cod sursa (job #2549721) | Cod sursa (job #1412226)
#include <cstdio>
using namespace std;
int v[200005];
int main()
{
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
int n,i,c,sc,stc,stmax,endmax,smax,sc1,stc1,stmax1,smax1,endmax1,stot=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d%d",&v[i],&c);
if(c==0)
v[i]=v[i]*-1;
stot=stot+v[i];
}
sc=smax=v[0];
stc=stmax=endmax=0;
for(i=1;i<n;i++)
{
if(sc+v[i]>v[i])
sc=sc+v[i];
else
{
sc=v[i];
stc=i;
}
if(sc>smax)
{
smax=sc;
stmax=stc;
endmax=i;
}
}
sc1=smax1=v[0];
stc1=stmax1=endmax1=0;
for(i=1;i<n;i++)
{
if(sc1+v[i]<v[i])
sc1=sc1+v[i];
else
{
sc1=v[i];
stc1=i;
}
if(sc1<smax1)
{
smax1=sc1;
stmax1=stc1;
endmax1=i;
}
}
if(stot-smax1>smax)
{
smax=stot-smax1;
stmax=(endmax1+1)%n;
endmax=stmax1-1;
printf("%d %d %d\n",smax,stmax+1,(n+1)-(stmax-endmax));
}
else
printf("%d %d %d\n",smax,stmax+1,endmax-stmax+1);
return 0;
}