Cod sursa(job #855420)

Utilizator informatician28Andrei Dinu informatician28 Data 14 ianuarie 2013 22:26:59
Problema Carnati Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream>
#include <algorithm>

#define DIM 2001
#define T first
#define P second

using namespace std;

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

pair <int, int> Client[DIM];
int N, C, Max_P, currentP, lastP, G;

int main()
{
    int i, j;
    in >> N >> C;
    for (i = 1; i <= N; i++)
    {
        in >> Client[i].T >> Client[i].P;
    }
    //sort (Client + 1, Client + N + 1);
    for (i = 1; i <= N; i++)
    {
        lastP = 0;
        for (j = 1; j <= N; j++)
        {
            if (Client[j].P >= Client[i].P) G = Client[i].P;
            else G = 0;
            currentP = lastP - (Client[j].T - Client[j-1].T) * C + G;
            if (G - C > currentP) currentP = G - C;
            if (currentP > Max_P ) Max_P = currentP;
            lastP = currentP;
        }
    }
    out << Max_P;
    return 0;
}