Pagini recente » Cod sursa (job #859469) | Cod sursa (job #526335) | Cod sursa (job #1002454) | Cod sursa (job #2116287) | Cod sursa (job #1985180)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int n,v[200005],bestlen1,bestpos1,bestsum1,semn,nr;
int bestlen2,bestpos2,bestsum2=2000000000,stot,a,i1,s,i;
int main()
{
f>>n;
for(i=1;i<=n;++i)
{
f>>nr>>semn;
if(semn==0) nr=-nr;
v[i]=nr;
stot+=nr;
}
for(int i=1;i<=n;++i) //subsecventa de suma maxima liniara
{
a=v[i];
if(s<=0)
{
s=a;
i1=i;
}
else s+=a;
if(s>bestsum1)
{
bestsum1=s;
bestpos1=i1;
bestlen1=i-i1+1;
}
}
s=0;
for(int i=1;i<=n;++i) //ss minima pentru ss maxim ciclic
{
a=v[i];
if(s>0)
{
s=a;
i1=i;
}
else s+=a;
if(s<bestsum2)
{
bestsum2=s;
bestpos2=i1;
bestlen2=i-i1+1;
}
}
if(bestsum1>=stot-bestsum2)
{
g<<bestsum1<<' '<<bestpos1<<' '<<bestlen1;
}
else
{
g<<stot-bestsum2<<' '<<bestpos2+bestlen2<<' '<<n-bestlen2;
}
return 0;
}