Cod sursa(job #261965)

Utilizator ProtomanAndrei Purice Protoman Data 18 februarie 2009 21:41:08
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <algorithm>
#include <stdio.h>

#define f first
#define s second
#define MAX 2048

using namespace std;

int clienti, salariu, rez;
pair <int, int> om[MAX];

int main()
{
    freopen("carnati.in", "r", stdin);
    freopen("carnati.out", "w", stdout);

    scanf("%d %d", &clienti, &salariu);

    for (int i = 1; i <= clienti; i++)
        scanf("%d %d", &om[i].f, &om[i].s);

    sort(om + 1, om + 1 + clienti);

    for (int fix = 1; fix <= clienti; fix++)
    {
        int pretFix = om[fix].s, timpPrec = 0, castig = 0;

        for (int i = 1; i <= clienti; i++)
        {
            castig = max(0, castig - (om[i].f - timpPrec) * salariu);

            if (om[i].s >= pretFix)
                castig += pretFix;

            timpPrec = om[i].f;
            rez = max(rez, castig - salariu);
        }
    }

    printf("%d\n", rez);

    fclose(stdin);
    fclose(stdout);
    return 0;
}