Cod sursa(job #1837886)

Utilizator mihai.alphamihai craciun mihai.alpha Data 30 decembrie 2016 15:52:24
Problema Ferma2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream>

#define N 1010

using namespace std;

ifstream f("ferma2.in");
ofstream g("ferma2.out");

int n,k,i,j,sol,suma,d[N][N],l[N][N],c[N][N],di[N][N],a[N][N];

int main()
{
    f >> n >> k;

    k = n - k;

    for(i = 1 ; i <= n ; ++ i)
        for(j = 1 ; j <= i ; ++ j)
        {
            f >> a[i][j];

            suma += a[i][j];

            l[i][j] = l[i][j - 1] + a[i][j];
            c[i][j] = c[i - 1][j] + a[i][j];
            di[i][j] = di[i - 1][j - 1] + a[i][j];
        }

    for(i = 1 ; i <= k ; ++ i)
        for(j = 1 ; j <= k ; ++ j)
        d[1][1] += a[i][j];

    sol = d[1][1];

    for(i = 2 ; i <= n - k + 1 ; ++ i)
    {
        d[i][1] = d[i - 1][1] - di[i + k - 2][k] + l[i + k - 1][k];

        sol = min(sol , d[i][1]);

        for(j = 2 ; j <= i ; ++ j)
        {
            d[i][j] = d[i][j - 1] + di[i + k - 1][j + k - 1] - di[i - 1][j - 1] - c[i + k - 1][j - 1] + c[i - 1][j - 1];

            sol = min (sol , d[i][j]);
        }
    }

    g << suma - sol << '\n';

    return 0;
}