Cod sursa(job #2508686)

Utilizator alex2209alexPavel Alexandru alex2209alex Data 12 decembrie 2019 18:58:27
Problema Ferma2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>

using namespace std;
ifstream f("ferma2.in");
ofstream g("ferma2.out");
int n,k,sum,rasp,l[1001][1001],c[1001][1001],dia[1001][1001],d[1001][1001];
int main()
{
	f >> n >> k;
	for(int i = 1; i <= n; ++i)
		for(int j = 1; j <= i; ++j)
		{
		    int x;
		    f >> x;
		    sum += x;
		    l[i][j] = l[i][j - 1] + x;
		    c[i][j] = c[i - 1][j] + x;
		    dia[i][j] = dia[i - 1][j - 1] + x;
		}
    int m = n - k;
    for(int i = 1; i <= m; ++i)
        d[1][1] += l[i][i];
    rasp = d[1][1];
    for(int i = 2; i + m - 1 <= n; ++i)
    {
        d[i][1] = d[i - 1][1] - dia[i + m - 2][m] + l[i + m - 1][m];
        rasp = min(rasp,d[i][1]);
        //g << i << " " << 1 << ":" << d[i][1] << '\n';
        for(int j = 2; j <= i; ++j)
        {
            d[i][j] = d[i][j - 1] - c[i + m - 1][j - 1] + c[i - 1][j - 1] + dia[i + m - 1][j + m - 1] - dia[i - 1][j - 1];
            //g << i << " " << j << ":" << d[i][j] << '\n';
            rasp = min(rasp,d[i][j]);
        }
    }
    g << sum - rasp << '\n';
	return 0;
}