Cod sursa(job #2672223)

Utilizator StefaniaIrinaDobra Stefania-Irina StefaniaIrina Data 13 noiembrie 2020 14:59:57
Problema Buline Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <fstream>
#include <climits>
using namespace std;
ifstream cin("buline.in");
ofstream cout("buline.out");
int v[200005];
int main()
{
  int n,sumaint=0,suma=INT_MIN,j1=1,j=1,poz1,poz2,poz3,poz4,i,sumaint1=0,suma1=INT_MIN,st=0,c,l;
  cin>>n;
  for(i=1;i<=n;i++)
  {
      cin>>l>>c;
      if(c==0)
        v[i]=-1*l;
      else
        v[i]=l;
      st=st+v[i];
  }
  for(i=1;i<=n;i++)
  {
      if(sumaint<0)
          {
              sumaint=v[i];
              j=i;
          }
      else
        sumaint+=v[i];
      if(sumaint>suma)
          {
              suma=sumaint;
              poz1=j;
              poz2=i;
          }
  }
    for(i=1;i<=n;i++)
        v[i]=v[i]*(-1);
      for(i=1;i<=n;i++)
          {
              if(sumaint1<0)
                  {
                      sumaint1=v[i];
                      j1=i;
                  }
              else
                sumaint1+=v[i];
              if(sumaint1>suma1)
                  {
                      suma1=sumaint1;
                      poz3=j1;
                      poz4=i;
                  }
          }
          suma1=suma1*(-1);
    if(suma>=st-suma1)
        cout<<suma<<' '<<poz1<<' '<<poz2-poz1+1;
    else
    {
        if(poz3==1)
            cout<<st-suma1<<' '<<poz4+1<<' '<<n-poz4;
        else
           {
            if(poz4==n)
                cout<<st-suma1<<' '<<1<<' '<<n-poz3-1;
            else
                cout<<st-suma1<<' '<<poz4+1<<' '<<n-poz4+poz3-1;
           }
    }
    return 0;
}