Cod sursa(job #3342220)

Utilizator stefan_dore_Stefan Dore stefan_dore_ Data 23 februarie 2026 13:52:52
Problema Carnati Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

ifstream f ("carnati.in");
ofstream g ("carnati.out");

const int NMAX = 2000;
int N, C, sol = -1e9, A[NMAX+1];

struct client {
    int timp, pret;
    //
    bool operator < (const client &c) const {
        return timp < c.timp;
    }
};

client V[NMAX+1];

void citire() {
    f >> N >> C;
    for (int i=1; i<=N; i++)
        f >> V[i].timp >> V[i].pret;
    //
    sort(V+1, V+N+1);
}

void solve() {
    int X;
    //
    for (int k=1; k<=N; k++) {
        X = V[k].pret;
        for (int i=1; i<=N; i++) {
            int profit = (X <= V[i].pret) ? X : 0;
            A[i] = max(A[i-1] - (V[i].timp - V[i-1].timp) * C + profit, profit - C);
            sol = max(sol, A[i]);
        }
    }
}

int main(){
    citire();
    solve();
    //
    g << sol;

    f.close();
    g.close();
    return 0;
}