Cod sursa(job #1559168)

Utilizator borcanirobertBorcani Robert borcanirobert Data 30 decembrie 2015 13:18:46
Problema Ferma2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#include <iostream>
using namespace std;

ifstream fin("ferma2.in");
ofstream fout("ferma2.out");

const int MAX = 1005;
const int INF = 0x3f3f3f3f;
int a[MAX][MAX];
int sl[MAX][MAX];
int sd[MAX][MAX];
int st[MAX][MAX];
int N, K;
int l;
int sdr, S;

void Read();
void Solve();

int main()
{
	Read();
	Solve();
	
	fin.close();
	fout.close();
	return 0;
}

void Read()
{
	int i, j;
	
	fin >> N >> K;
	for ( i = 1; i <= N; i++ )
		for ( j = 1; j <= i; j++ )
			fin >> a[i][j];
}

void Solve()
{
	int i, j;
	
	for ( i = 1; i <= N; i++ )
		for ( j = 1; j <= N; j++ )
		{
			S += a[i][j];
			sl[i][j] = sl[i][j - 1] + a[i][j];
			sd[i][j] = sd[i - 1][j] + sl[i][j];
			st[i][j] = st[i - 1][j - 1] + sl[i][j];
		}
	
	l = N - K; sdr = INF;
	for ( i = l; i <= N; i++ )
		for ( j = l; j <= i; j++ )
		{
			sdr = min( sdr, st[i][j] - sd[i][j - l] + sd[i - l][j - l] - st[i - l][j - l] );
		}
	
	fout << S - sdr << '\n';
}