Cod sursa(job #2293152)

Utilizator DavvDrgDavid Dragostin DavvDrg Data 30 noiembrie 2018 16:43:00
Problema Carnati Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>

using namespace std;
int v[2001];
int t[2001];
ifstream cin("carnati.in");
ofstream cout("carnati.out");
int main()
{
    int n,c,i,x,j;
    long long s=0;
    cin>>n>>c;
    for(i=1; i<=n; i++)
    {
        cin>>t[i]>>v[i];
    }
    int smax=-2000000,ok=0,ok1=0,a,b;
    for(i=1; i<=n; i++)
    {
        s=0;
        ok=0;
        ok1=0;
        for(j=1; j<=n; j++)
        {
            if(v[i]<=v[j]&&ok==0)
            {
                s+=v[i];
                ok=1;
                a=t[i];
            }
            if(v[i]<=v[j]&&ok==1)
            {
                s+=v[i];
                b=t[i];
            }
            s=s-c*(b-a+1);
            if(s>smax)
            {
                smax=s;
                x=v[i];
            }
        }
    }
    int pret=x;
    long long profc=-1,profm=-1;
    for(i=1; i<=n; i++)
    {
        if((t[i]-t[i-1]-1)*c>profc)
        {
            profc=0;
        }
        else
        {
            profc-=(t[i]-t[i-1]-1)*c;
        }
        profc+=(v[i]>=pret?pret:0)-c;
        profm=max(profm,profc);
    }
    cout<<profm;
    return 0;
}