Cod sursa(job #1774741)

Utilizator mihai.alphamihai craciun mihai.alpha Data 9 octombrie 2016 13:25:47
Problema Carnati Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

#define maxim(a, b)(a>b?a:b)
struct om{
    int timp;
    int pret;
};
om v[2001];

bool cmp(om A, om B)  {
    return A.timp < B.timp;
}

int main()  {
FILE *fin = fopen("carnati.in", "r");
FILE *fout = fopen("carnati.out", "w");
int n, c;/// n nr de oameni, c salariul vanzatorului
fscanf(fin, "%d%d", &n, &c);
int i, j;
for(i = 1;i <= n;i++)  {
    fscanf(fin, "%d%d", &v[i].timp, &v[i].pret);
}
sort(v, v+n+1, cmp);
int prcurent, max = -1, sc;
int devandut;
int ore;
v[0].timp = v[0].pret = -100;
for(i = 1;i <= n;i++)  {
    prcurent = v[i].pret;
    sc = 0;
    for(j = 1;j <= n;j++)  {
        devandut = 0;
        if(v[j].pret>=prcurent)
            devandut = prcurent;
        ore = v[j].timp - v[j - 1].timp;
        sc = maxim(sc + devandut - c * ore, devandut - c);
        max = maxim(max, sc);

    }
}
fprintf(fout, "%d", max);
fclose(fin);
fclose(fout);
return 0;
}