Cod sursa(job #179884)

Utilizator moga_florianFlorian MOGA moga_florian Data 16 aprilie 2008 13:51:18
Problema Carnati Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>

struct nod{int T,P;} A[2010];
int B[1510];

int main(){

    FILE *fin = fopen("carnati.in","r"),
         *fout = fopen("carnati.out","w");

    int N,C;
    fscanf(fin,"%d%d",&N,&C);
    for(int i=1;i<=N;i++)
        fscanf(fin,"%d%d",&A[i].T,&A[i].P);

    //fixare pret
    int sol = 0;

    for(int k=1;k<=N;k++){

        int PRET = A[k].P;

        for(int i=0;i<=1500;i++) B[i] = -C;

        for(int i=1;i<=N;i++)
            if(A[i].P >= PRET)
                B[A[i].T] += PRET;

        //suma de subsecventa minima intre 2 - 2*N
        for(int i=1;i<=1500;i++)
            B[i] += B[i-1];

        int MIN = 0;
        for(int i=1;i<=1500;i++){
            if(B[i] - MIN > sol)
                sol = B[i] - MIN;

            if(B[i] < MIN)
                MIN = B[i];
        }

    }

    fprintf(fout,"%d\n",sol);

    fclose(fin);
    fclose(fout);
    return 0;

}