Pagini recente » Diferente pentru olimpici intre reviziile 161 si 180 | Monitorul de evaluare | Istoria paginii utilizator/kosmy88 | Profil Sava_Barbuta_Dospra | Cod sursa (job #1687250)
#include <iostream>
#include<fstream>
using namespace std;
long long v[400005],p,u,i,semn,n,s,bestsum,l,poz;
int main()
{
ifstream f("buline.in");
ofstream g("buline.out");
f>>n;
for(i=1;i<=n;i++)
{
f>>v[i]>>semn;
if(!semn) v[i]*=-1;
v[n+i]=v[i];
}
for(i=1;i<=n;i++)
{
if(s<=0)
{
p=i;
u=i;
s=v[i];
}
else
{
u++;
s+=v[i];
}
if(s>bestsum) {bestsum=s;l=u-p+1;poz=p;}
}
for(i=1;i<=n;i++)
{
if(s<=0)
{
p=i;
u=i;
s=v[i];
}
else
{
u++;
s+=v[i];
}
if(p==u-n) {p++;s-=v[i];}
while(v[p]<0&&p<u)
{
s-=v[p];
p++;
}
if(s>bestsum) {bestsum=s;l=u-p+1;poz=p;}
}
g<<bestsum<<' '<<poz<<' '<<l;
return 0;
}