Cod sursa(job #1794202)

Utilizator croi01Henry Croitor Jr. croi01 Data 1 noiembrie 2016 06:12:50
Problema Carnati Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define max(a,b) (((a)>(b))?(a):(b))

struct str
{
    int t,pret;
};

bool compare(str a,str b)
{
    return a.t<b.t;
}

int main()
{
    int n,m,j,i,max,actual,g;
    FILE * fp;
    fp = fopen("carnati.in","r");
    fscanf(fp,"%i",&n);
    fscanf(fp,"%i",&m);
    str vals[2001];
    for(i = 1;i<=n;i++)
    {
        fscanf(fp,"%i",&vals[i].t);
        fscanf(fp,"%i",&vals[i].pret);
    }
    sort(vals+1,vals+n+1,compare);
    for(i = 1;i<=n;++i)
    {
        actual = -m;
        max = 0;
        for(j=1;j<=n;++j)
        {
                if(vals[i].pret <= vals[j].pret)
                {
                    g = vals[i].pret;
                }
                else
                {
                    g = 0;
                }
                actual = max(g - m,actual -(vals[j].t - vals[j-1].t)*m + g);
                max = max(actual,max);
        }
    }
    fclose(fp);
    fp = fopen("carnati.out","w");
    fprintf(fp,"%i",max);
    fclose(fp);
    return 0;
}