Cod sursa(job #593503)

Utilizator SpiderManSimoiu Robert SpiderMan Data 3 iunie 2011 12:15:19
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
# include <algorithm>
# include <cstdio>
using namespace std;

# define T first
# define P second

typedef pair <int, int> PR ;
const char *FIN = "carnati.in", *FOU = "carnati.out" ;
const int MAX = 2005, oo = 0x7FFFFFFF ;

PR V[MAX] ;
int N, C, sol ;

int main (void) {
    freopen (FIN, "r", stdin) ;

    scanf ("%d %d", &N, &C) ;
    for (int i = 1; i <= N; ++i)
        scanf ("%d %d", &V[i].T, &V[i].P) ;
    sort (V + 1, V + N + 1) ;
    for (int i = 1; i <= N; ++i) {
        PR aux (-oo, V[i].P) ;
        for (int j = 1, k = 0; j <= N; ++j) {
            if (aux.P <= V[j].P) {
                aux.T = max (aux.T, V[j].T * C - k * aux.P) ;
                sol = max (sol, k * aux.P - V[j].T * C + aux.T + aux.P - C), ++k ;
            }
        }
    }
    fprintf (fopen (FOU, "w"), "%d", sol) ;
}