Cod sursa(job #2819885)

Utilizator BlueLuca888Girbovan Robert Luca BlueLuca888 Data 19 decembrie 2021 12:46:58
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAXN = 2005;
const int TIME = 1500;

struct customer{
    int t;
    int p;
} v[MAXN];

inline bool cmp(const customer &a, const customer &b){
    return a.t < b.t;
}

int dp[TIME + 5];
int n, c, price, sum, sol = -2e9;

int main (){
    fin>>n>>c;
    for(int i=1; i<=n; i++)
        fin>>v[i].t>>v[i].p;
    sort(v+1, v+n+1, cmp);

    for(int i=1; i<=n; i++){

        price = v[i].p;

        for(int j=1; j<=n; j++)
            if(v[j].p >= price)
                dp[ v[j].t ] += price;

        sum = 0;
        for(int j=0; j<=TIME; j++){
            dp[j] -= c;

            if(sum + dp[j] > dp[j])
                sum += dp[j];
            else
                sum  = dp[j];

            sol = max(sol, sum);
            dp[j] = 0;
        }
    }
    fout<<sol;
    return 0;
}