Pagini recente » Cod sursa (job #1130414) | Cod sursa (job #2361880) | Istoria paginii runda/incalzire | Cod sursa (job #526066) | Cod sursa (job #2007014)
#include<fstream>
using namespace std;
ifstream fi("buline.in");
ofstream fo("buline.out");
int n,i,s,x,a,sum,ind,bst1,b1,sf1,A[200001],bst2,b2,sf2;
int main()
{
fi>>n;
for(i=1; i<=n; i++)
{
fi>>x>>a;
if(a==1)
x=-x;
s-=x;
A[i]=x;
}
bst1=-1000000000;
//ssmin
for(i=1; i<=n; i++)
{
if(sum<0)
{
sum=A[i];
ind=i;
}
else
sum+=A[i];
if (bst1<sum)
{
bst1=sum;
b1=ind;
sf1=i;
}
}
//ssm
bst2=-1000000000;
sum=0;
ind=0;
for(i=1; i<=n; i++)
{
if(sum<0)
{
sum=-A[i];
ind=i;
}
else
sum-=A[i];
if (bst2<sum)
{
bst2=sum;
b2=ind;
sf2=i;
}
}
if(s+bst1>bst2)
fo<<s+bst1<<" "<<sf1+1<<" "<<n-(sf1-b1+1)<<"\n";
else
fo<<bst2<<" "<<b2<<" "<<b2+sf2-1<<"\n";
fi.close();
fo.close();
return 0;
}