Cod sursa(job #1775329)

Utilizator amaliarebAmalia Rebegea amaliareb Data 10 octombrie 2016 11:18:29
Problema Carnati Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;
ifstream f("carnati.in");
ofstream g("carnati.out");
struct client {int pret; int timp;} v[2001];
int n,i,j,c,pretcurent,ultim,uprofit,cprofit,maxjprofit,maxprofit,maxmaxprofit,maxpret,maxi,maxj;

bool mycmp(client a, client b)
{
    if(a.timp<b.timp) return 1;
    return 0;
}

int main()
{
    f>>n>>c;
    for(i=1;i<=n;i++) f>>v[i].timp>>v[i].pret;
    sort(v+1,v+n+1,mycmp);
    for(i=1;i<=n;i++) cout<<v[i].timp<<' '<<v[i].pret<<'\n';
    for(i=1;i<=n;i++)
    {
        pretcurent=v[i].pret;
        ultim=0; uprofit=0; maxjprofit=0;
        for(j=1;j<=n;j++)
        {
            if(pretcurent<=v[j].pret)
            {
                cprofit=uprofit+pretcurent-(v[j].timp-v[ultim].timp)*c;
                maxjprofit=max(cprofit,pretcurent-c);
                ultim=j;
                uprofit=maxjprofit;
                if(maxjprofit>maxprofit) maxprofit=maxjprofit, maxj=j, maxpret=pretcurent;
            }
        }
        if(maxprofit>maxmaxprofit) maxmaxprofit=maxprofit, maxj=j, maxpret=pretcurent;
    }
    g<<maxmaxprofit<<'\n';
    return 0;
}