Cod sursa(job #3361230)

Utilizator AlessiaFratiloiuFratiloiu Alessia AlessiaFratiloiu Data 22 iulie 2026 09:39:43
Problema Carnati Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
using namespace std;
ifstream cin("carnati.in");
ofstream cout("carnati.out");
int t[2005], p[2005];
int main()
{
    int n, C;
    cin >> n >> C;
    for (int i = 1; i <= n; i++)
        cin >> t[i] >> p[i];
    for (int i = 1; i < n; i++)
        for (int j = i + 1; j <= n; j++)
            if (t[i] > t[j])
            {
                swap(t[i],t[j]);

                swap(p[i],p[j]);
            }

    long long maxim = 0;
    for (int k = 1; k <= n; k++)
    {
        int pret = p[k];
        long long castig;
        if (p[1] >= pret)
            castig = pret;
        else
            castig = 0;
        long long curent = castig - C;
        if (curent > maxim)
            maxim = curent;
        for (int i = 2; i <= n; i++)
        {
            if (p[i] >= pret)
                castig = pret;
            else
                castig = 0;
            long long incepe = castig - C;
            long long continua = curent - 1LL * C * (t[i] - t[i - 1]) + castig;
            if (incepe > continua)
                curent = incepe;
            else
                curent = continua;
            if (curent > maxim)
                maxim = curent;
        }
    }
    cout << maxim;
    return 0;
}