Cod sursa(job #1794200)

Utilizator croi01Henry Croitor Jr. croi01 Data 1 noiembrie 2016 05:47:40
Problema Carnati Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#include <stdlib.h>
#define max(a,b) (((a)>(b))?(a):(b))

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);
    int pret[n];
    int h[n];
    for(i = 0;i<n;i++)
    {
        fscanf(fp,"%i",&h[i]);
        fscanf(fp,"%i",&pret[i]);
    }
    for(i = 0;i<n;i++)
    {
        if(pret[0] >= pret[i])
        {
            actual = pret[i] - m;
        }
        else
        {
            actual = 0;
        }
        max = 0;
        for(j=1;j<n;j++)
        {
                if(pret[i] <= pret[j])
                {
                    g = pret[i];
                }
                else
                {
                    g = 0;
                }
                actual = max(g - m,actual -(h[j] - h[j-1])*m + g);
                max = max(actual,max);
        }
    }
    fclose(fp);
    fp = fopen("carnati.out","w");
    fprintf(fp,"%i",max);
    fclose(fp);
    return 0;
}