Cod sursa(job #1475926)

Utilizator eu3neuomManghiuc Teodor-Florin eu3neuom Data 24 august 2015 13:37:43
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <utility>
#include <algorithm>

using namespace std;

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

const int NMax = 2005;

int D[NMax];

pair < int, int > v[NMax];

int main(){
    int n, c, p, t, value, ans, x;
    fin >> n >> c;
    for(int i = 1; i <= n; i++){
        fin >> t >> p;
        v[i] = make_pair(t, p);
    }
    sort(v + 1, v + n + 1);
    ans = 0;
    v[0].first = v[0].second = -NMax;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            x = v[i].second;
            if(v[j].second < x){
                x = 0;
            }
            value = D[j - 1] - (v[j].first - v[j - 1].first) * c + x;
            D[j] = max(value, x - c);
            ans = max(ans, D[j]);
        }
    }
    fout << ans;
    return 0;
}