Pagini recente » Cod sursa (job #3194007) | Cod sursa (job #92784) | Cod sursa (job #127459) | Cod sursa (job #2641424) | Cod sursa (job #1409418)
#include <cstdio>
using namespace std;
long a[200001],tip,smax,smax2,s,n,cycle,beginf1,beginf2,cntf1,cntf2,cnt;
int main()
{
freopen("buline.in","r",stdin);
freopen("buline.out","w",stdout);
scanf("%ld",&n);
for(long i=1;i<=n;i++)
{
scanf("%ld%ld",&a[i],&tip);
if(!tip) a[i]*=(-1);
}
cycle=1;long begin=0;
for(long i=1;i<=n;i++)
{
s=s+a[i];
cnt++;
if(s>smax){
smax=s;
beginf1=begin;
cntf1=cnt;
}
if(s<0)
{
s=0;
cnt=0;
begin=i+1;
}
if(i==n && cycle==1)
cycle=2,i=0;
if(cycle==2 && i==begin-1)
break;
}
if(s>smax){smax=s;beginf1=begin;}
s=0;
begin=0;
cycle=1;
for(long i=1;i<=n;i++)
a[i]*=-1;
cnt=0,begin=0;
for(long i=1;i<=n;i++)
{
s=s+a[i];
cnt++;
if(s>smax2){
smax2=s;
beginf2=begin;
cntf2=cnt;
}
if(s<0){
s=0;
begin=i+1;
cnt=0;
}
if(i==n && cycle==1)
cycle=2,i=0;
if(cycle==2 && i==begin-1)
break;
}
if(s>smax2)
smax2=s;
if(smax>smax2)
printf("%ld %ld %ld\n",smax,beginf1,cntf1);
else printf("%ld %ld %ld\n",smax2,beginf2,cntf2);
return 0;
}