Cod sursa(job #2200080)

Utilizator RaduIonescuRadu Ionescu RaduIonescu Data 30 aprilie 2018 11:58:42
Problema Carnati Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in ("carnati.in");
ofstream out ("carnati.out");

int n,cost,pret[2005],timp[1507],sumpartz[1507],MAXIM;

int sumax (int a[])
{
    int s,smax,i;

    s=smax=a[0];

    for (i=1;i<1501;++i)
    {
        if (s<0) s=a[i];

        else s+=a[i];

        if (s>smax) smax=s;
    }

    return smax;
}

int main()
{
    int i,j;

    in>>n>>cost;

    //cout<<"n = "<<n<<"\n";
    for (i=1;i<=n;++i)
        in>>timp[i]>>pret[i];

    for (j=0;j<=1500;++j)
        sumpartz[j] = -cost;

    for (i=1;i<=n;++i)
    {
        int pretcrt=pret[i];

        //cout<<"pretcrt = "<<pretcrt<<"\n";

        for (j=1;j<=n;++j)
        {
            //cout<<"pret["<<j<<"] = "<<pret[j]<<"\n";
            if (pretcrt<=pret[j])
                sumpartz[timp[j]]=pretcrt-cost;
            else
                sumpartz[timp[j]] = -cost;
        }

        //for(j=0; j<=9; ++j) cout<<sumpartz[j]<<" "; cout<<"\n";

        int s = sumax(sumpartz);
        //cout<<"s = "<<s<<"\n";
        MAXIM=max(MAXIM,s);
    }

    out<<MAXIM;

    return 0;
}