Pagini recente » Cod sursa (job #3292004) | Cod sursa (job #2915872) | Cod sursa (job #2307233) | Cod sursa (job #1144637) | Cod sursa (job #1828297)
#include <fstream>
using namespace std;
ifstream fin ("buline.in");
ofstream fout("buline.out");
int n,v[200003],s[200003],i,sol,solv,sol1v,sol1,a,b;
long long minim,maxim,pmax,jmax,maxim1,minim1,minimv,maximv,pmaxv,jmaxv,maxim1v,minim1v;
int main(){
fin>>n;
s[0]=0;
for(i=1;i<=n;i++)
{
fin>>a>>b;
if(b==0)
{
a*=-1;
}
v[i]=a;
}
minim=2000000000LL;
maxim=-2000000000LL;
maxim1=2000000000LL;
for(i=1;i<=n;i++)
{
s[i]=s[i-1]+v[i];
if(s[i]>maxim)
{
maxim=s[i];
sol=i;
}
if(s[i]!=maxim)
{
if(s[i]-maxim<minim)
{
minim=s[i]-maxim;
pmax=sol;
jmax=i;
}
}
}
int ok=0;
for(i=1;i<=n;i++)
{
if(v[i]>=0)
{
ok=1;
}
if(v[i]<maxim1)
{
maxim1=v[i];
sol1=i;
}
}
s[0]=0;
minimv=2000000000LL;
maximv=-2000000000LL;
minim1v=-2000000000LL;
for(i=1;i<=n;i++)
{
s[i]=s[i-1]+v[i];
if(s[i]<minimv)
{
minimv=s[i];
sol=i;
}
if(s[i]!=minimv)
{
if(s[i]-minimv>maximv)
{
maximv=s[i]-minimv;
pmaxv=sol;
jmaxv=i;
}
}
}
if(ok==1)
if(maximv>s[n]-minim)
fout<<maximv<<" "<<pmaxv+1<<" "<<jmaxv-pmaxv;
else
fout<<s[n]-minim<<" "<<jmax+1<<" "<<n-(jmax-pmax);
else
fout<<s[n]-maxim1<<" "<<sol1-1<<" "<<n-1;
return 0;
}