Cod sursa(job #2645708)

Utilizator MerlinTheWizardMelvin Abibula MerlinTheWizard Data 29 august 2020 14:53:09
Problema Buline Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("buline.in");
ofstream g("buline.out");
int n,suma,smax=-1000001,stmax,drmax,stmin,drmin,contor,v[200001],min1,smin=10001,S,pozmin,pozmax;
void citire()
{
    f>>n;
    int x,c;
    for(int i=1;i<=n;i++)
    {
        f>>x>>c;
        if(c==0)
            v[i]=-x;
        else
            v[i]=x;
        S=S+v[i];
    }
}
void smin1()
{
    suma=v[1];
    smin=v[1];
    stmin=1;
    for(int i=2;i<=n;i++)
    {
        if(suma>0)
        {
            stmin=i;
            suma=0;
        }
        suma=suma+v[i];
        if(suma<smin)
        {
            pozmin=stmin;
            smin=suma;
            drmin=i;
        }
    }
}
void ssmax()
{
    suma=v[1];
    smax=v[1];
    stmax=1;
    for(int i=2;i<=n;i++)
    {
        if(suma<0)
        {
            stmax=i;
            suma=0;
        }
        suma=suma+v[i];
        if(suma>smax)
        {
            pozmax=stmax;
            smax=suma;
            drmax=i;
        }

    }
}
void Afisare()
{
	S = S - smin;
	if (smax > S)
	{
		g<<smax<< " " << pozmax << " " << pozmax - stmax+1;
	}
	else if (smax == S)
         {		g << smax << " " << pozmax << " " << pozmax - stmax+1;	  }
	else if (smax < S)
	{
		g <<S<<" "<< drmin+1 << " " << n-(drmin-pozmin+1) << "\n";
        }
}
int main()
{
    citire();
    ssmax();
    g<<"\n";
    smin1();
    Afisare();
    return 0;
}