Cod sursa(job #1896217)

Utilizator Daria09Florea Daria Daria09 Data 28 februarie 2017 15:55:32
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#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;
}