Cod sursa(job #1618067)

Utilizator TataruTataru Mihai Tataru Data 27 februarie 2016 18:01:45
Problema Ubuntzei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <iostream>
#include <cstdio>
#define NMAX 5001
#define inFile "joc.in"
#define outFile "joc.out"
#define INF 1<<30

using namespace std;

int n, k, suma, maxi, w[2][NMAX], vec[2][NMAX];

int main() {
    FILE *fin, *fout;
    fin = fopen(inFile, "r");
    fscanf(fin, "%d %d", &n, &k);
    for(int i = 0; i < 2; ++i)
        for(int j = 0; j < n; ++j)
            fscanf(fin, "%d" , &w[i][j]);
    vec[0][0] = w[0][0]; vec[1][0]=0;
    for(int i = 1; i < n; ++i)
       for(int j = 0; j < 2; ++j)
        {
            maxi = -INF;
            suma = w[j][i];
            for(int p = 1; p < k && p <=i; ++p) {
                suma += w[j][i-p];
                if(suma + vec[1-j][i-p] > maxi)
                    maxi = suma + vec[1-j][i-p];
            }
            vec[j][i] = maxi;
        }
    fout = fopen(outFile, "w");
    if(vec[0][n-1] + w[1][n-1] > vec[1][n-1])
        vec[1][n-1] = vec[0][n-1] + w[1][n-1];
    fprintf(fout, "%d", vec[1][n-1]);
}