Cod sursa(job #1794558)

Utilizator croi01Henry Croitor Jr. croi01 Data 1 noiembrie 2016 14:39:36
Problema Carnati Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 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,maxv,actual,g;
    FILE * fp;
    fp = fopen("carnati.in","r");
    fscanf(fp,"%i",&n);
    fscanf(fp,"%i",&m);
    str vals[2001];
    for(i = 0;i<n;i++)
    {
        fscanf(fp,"%i",&vals[i].t);
        fscanf(fp,"%i",&vals[i].pret);
    }
    sort(vals,vals+n,compare);
    maxv = 0;
    for(i = 0;i<n;++i)
    {
        actual = -m;
        for(j=0;j<=n;++j)
        {
                g = 0;
                if(vals[i].pret <= vals[j].pret)
                {
                    g = vals[i].pret;
                }
                actual = max(g - m,actual -(vals[j].t - vals[j-1].t)*m + g);
                maxv = max(actual,maxv);
        }
    }
    fclose(fp);
    fp = fopen("carnati.out","w");
    fprintf(fp,"%i",maxv);
    fclose(fp);
    return 0;
}