Cod sursa(job #179882)

Utilizator moga_florianFlorian MOGA moga_florian Data 16 aprilie 2008 13:48:57
Problema Carnati Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 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];

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

    }

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

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

}