Cod sursa(job #1356564)

Utilizator CiurezAndreiCiurez Marius-Andrei CiurezAndrei Data 23 februarie 2015 14:42:58
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <algorithm>

using namespace std;

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

int n, C, vmax, i, j, D[2010];
struct carnati{
    int t;
    int p;
} v[2010];

int cmp(carnati a, carnati b){
    return a.t < b.t;
}

int main()
{
    fin >> n >> C;

    for(i = 1; i <= n; i ++)
        fin >> v[i].t >> v[i].p;

    sort(v + 1, v + n + 1, cmp);

    v[0].t = v[1].t - 1;

    for(i = 1; i <= n; i ++)
        for(j = 1; j <= n; j ++)
        {
            D[j] = 0;
            if(v[i].p <= v[j].p)
                D[j] = v[i].p;
            D[j] = max(D[j] + D[j - 1] - (v[j].t - v[j - 1].t) * C, D[j] - C);
            vmax = max(vmax,D[j]);
        }

    fout << vmax;
    return 0;
}