Pagini recente » Cod sursa (job #2968794) | Cod sursa (job #720900) | Cod sursa (job #1785607) | Cod sursa (job #238003) | Cod sursa (job #1896217)
#include <iostream>
#include <fstream>
#define Nmax 200002
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int a[Nmax],n,sum[Nmax];
void read()
{
f>>n; int i; bool ok;
for(i=1;i<=n;i++)
{
f>>a[i]>>ok;
if(ok==0)a[i]-=2*a[i];
}
f.close();
}
void solve()
{
int i,smax,s,l=1,j=1,lmax=1,y=1,sum=0;
for(i=1;i<=n;i++)sum+=a[i];
smax=s=a[1]; a[1]=-a[1];
for(i=2;i<=n;i++)
{
if(s+a[i]>a[i]){s+=a[i];l++;} else {s=a[i];l=1;j=i;}
if(smax<s){smax=s;lmax=l;y=j; }
a[i]=-a[i];
}
int smax2=a[1],lmax2=1,y2=1; s=a[1]; l=1; j=1;
for(i=2;i<=n;i++)
{
if(s+a[i]>a[i]){s+=a[i];l++;} else {s=a[i];l=1;j=i;}
if(smax2<s){smax2=s;lmax2=l;y2=j;}
}
if(sum+smax2>smax)
g<<sum+smax2<<" "<<lmax2+y2<<" "<<n-lmax2; else
g<<smax<<" "<<y<<" "<<lmax;
}
int main()
{
read(); solve();
return 0;
}