Cod sursa(job #2330041)

Utilizator DragosArseneDragos Arsene DragosArsene Data 27 ianuarie 2019 19:31:03
Problema Carnati Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <iostream>
#include <stdio.h>
using namespace std;
int m[2000][4000], t[2000], p[2000];
int main() {
    FILE *fin, *fout;
    int n, i, j, min, tcurent, inceput, c, l, max, maxxx=0, sum;

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

fscanf(fin,"%d%d", &n, &c);
for(i=1;i<=n;i++){
    fscanf(fin,"%d%d", &t[i], &p[i]);
}







min=p[1];
inceput=1;

for(i=1;i<=n;i++){
    min = p[i];
    m[i][1]=-(t[1]-1)*c;
    j=2;
    l=1;
    while(j<=2*n){
    if(p[l]>=min)
    m[i][j]=min-c;
    else
    m[i][j]=-c;
    j++;
    m[i][j]=-(t[l+1]-t[l]-1)*c;
    j++;
    l++;


    }

}


for(i=1;i<=n;i++){
    sum=0;
    max=0;
    for(j=1;j<=2*n-1;j++){
        if(sum+m[i][j]<0){
            m[i][j]=0;
            sum=0;
        }
        else{
            m[i][j]=sum+m[i][j];
            sum=m[i][j];
        }
    }

    for(j=1;j<=2*n-1;j++){
        if(m[i][j]>max)
            max=m[i][j];
    }

    if(max>maxxx)
        maxxx=max;

}


fprintf(fout,"%d", maxxx);
fclose(fin);
fclose(fout);

    return 0;
}