Cod sursa(job #2990917)

Utilizator andreibrosPeta Andrei Mathias andreibros Data 8 martie 2023 19:20:54
Problema Carnati Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("carnati.in");
ofstream out("carnati.out");
int d[2005];
struct cel
{
    int timp;
    int pret;
}v[2005];
bool cmp(cel a, cel b)
{
    if(a.timp==b.timp)
        return a.pret<b.pret;
    return a.timp<b.timp;

}
int main()
{
    int n,c;
    int Max=0;
    in>>n>>c;
    for(int i=1; i<=n; i++)
    {
        in>>v[i].timp>>v[i].pret;
    }
    sort(v+1, v+n+1, cmp);

    for(int i=1; i<=n; i++)
    {
        int x=v[i].pret;
        for(int j=1; j<=n; j++)
        {
            if(v[j].pret>=x)
                d[j]=max((d[j-1]-c*(v[j].timp-v[j-1].timp)+x),x-c);
            else
                d[j]=max((d[j-1]-c*(v[j].timp-v[j-1].timp)),-c);
        }
        int maxim=d[1];
        for(int j=2; j<=n; j++)
            if(maxim<d[j])
                maxim=d[j];
        Max=max(Max,maxim);
    }
    out<<Max;


    return 0;
}