Cod sursa(job #2516866)

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

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

const long long NMAX = 2001;
const long long 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 (long long i = 1; i <= n; ++i)
        fin >> a[i].t >> a[i].p;

    sort(a + 1, a + n + 1, cmp);

    for (long long i = 1; i <= n; ++i)
    {
        ++t[a[i].t + 1];

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

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