Cod sursa(job #2065601)

Utilizator laurpoppopescu laurentiu laurpop Data 13 noiembrie 2017 22:23:15
Problema Buline Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <fstream>
#include <limits.h>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int v[200001],n,i,k,s,l,p,smax,l1,p1,maxi[200001],poz[200001];
int main()
{
    f>>n;
    smax=INT_MIN;
    s=-1;maxi[0]=INT_MIN;
    for(i=1;i<=n;i++)
    {
        f>>v[i]>>k;

              if(k==0)
                 v[i]=-v[i];

        //v[i+n]=v[i];
        if(s>=0)
        {
            s+=v[i];
            l++;
        }
            else
            {
                p=i;
                s=v[i];
                l=1;
            }
        if(smax<s)
        {
            smax=s;
            p1=p;
            l1=l;
        }
        if(s>maxi[i-1]){
            maxi[i]=s;
            poz[i]=i;
        }
        else
          {
              maxi[i]=maxi[i-1];
              poz[i]=poz[i-1];
          }
     v[i]+=v[i-1];

    }
    for(i=1;i<=n;i++)
    {
        if(smax<v[n]-v[i-1]+maxi[i-1]){
            smax=v[n]-v[i-1]+maxi[i-1];
            p1=i;
            l1=n-(i-poz[i-1]-1);
        }
    }
    g<<smax<<" ";
    if(p1<=n)
       g<<p1<<" "<<l1;
     else
       g<<p1-n<<" "<<l1;
    return 0;
}