Cod sursa(job #1258920)

Utilizator VisanCosminVisan Tudor Cosmin VisanCosmin Data 9 noiembrie 2014 16:01:32
Problema Carnati Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <stdio.h>

long abs(long n)
{
    if(n<0) return -n;
    return n;
}

int n,t[2001];
long c[2001],p,old,maxs,news;

void sorts()
{
    int inv ,aux;
    long aux2;
    do
    {
        inv  = 0;
        for(int i = 0 ;i <n-1;i++)
            if(t[i]>t[i+1])
            {
                inv =1;
                aux = t[i];
                t[i] = t[i+1];
                t[i+1] = aux;

                aux2 = c[i];
                c[i] = c[i+1];
                c[i+1] = aux2;
            }

    }while(inv);
}

int main()
{
    FILE*f =fopen("carnati.in","r");
    fscanf(f,"%d%d",&n,&p);
    for(int i = 0 ;i<n;i++)
        fscanf(f,"%d%d",&t[i],&c[i]);
    fclose(f);

    sorts();

    for(int i = 0 ;i<n;i++)
    {
        old = news = 0;

        for(int j = 0 ;j<n;j++)
        {
            if(c[j]>=c[i])
                news = old -(abs(t[j]-t[i]))*p+c[i];
            //if(news <= c[i]-p) news = c[i]-p;
            if(news >= maxs) maxs = news;
            old = news;
        }
    }

    FILE * g = fopen("carnati.out","w");
    fprintf(g,"%d",maxs-p);
    fclose(g);
    return 0;
}