Cod sursa(job #2516863)

Utilizator mirceamaierean41Mircea Maierean mirceamaierean41 Data 2 ianuarie 2020 15:12:50
Problema Carnati Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

const int NMAX = 2001;
const int tmp = 1505;

long long max(long long a, long long b)
{
    return (a > b) ? a : b;
}

long long min(long long a, long long b)
{
    return (a < b) ? a : b;
}

struct carnati
{
    long long t, p;
};

inline bool cmp(carnati a, carnati b)
{
    return a.p > b.p;
}

carnati a[NMAX];

long long n, c, maxi, t[tmp], nr;

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

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

    sort(a + 1, a + n + 1, cmp);
    for (int i = 1; i <= n; ++i)
    {
        ++t[a[i].t + 1];

        for (int j = 1; j <= a[i].t; ++j)
        {
            nr = t[j] * a[i].p - c + max(nr, 0);
            if (nr > maxi) maxi = nr;
        }
    }

    fout << maxi << "\n";
    return 0;
}