Cod sursa(job #629136)

Utilizator thea35Mihai Ana thea35 Data 2 noiembrie 2011 18:12:22
Problema Carnati Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <algorithm>

using namespace std;

struct client
{
    int t,p;
};

client v[2001];
int c,n;

int max(int x, int y)
{
    if(x>y) return x;
    else return y;
}
int profit (int pret)
{
    int sc=0, smax=0, prc;
    for(int i=1; i<=n; i++)
    {
        if(v[i].p>=pret)
            prc=pret-c;
        else
            prc=-c;
        sc=max(sc-(v[i].t-v[i-1].t-1)*c, 0)+prc;
        if(sc>smax)
            smax=sc;
    }
    return smax;
}

bool cmp (client x, client y)
{
    return x.t<y.t;
}

int main()
{
    int p , profitmax=0;
    ifstream in("carnati.in");
    ofstream out("carnati.out");
    in>>n>>c;
    for(int i=1; i<=n; i++)
        in>>v[i].t>>v[i].p;
    sort(&v[1],&v[n+1],cmp);
    for(int i=1; i<=n; i++)
    {
        p=profit(v[i].p);

        if(p>profitmax)
            profitmax=p;
    }

    out<<profitmax;

    return 0;
}