Cod sursa(job #636339)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 19 noiembrie 2011 19:04:18
Problema Ferma2 Scor 20
Compilator cpp Status done
Runda .com 2011 Marime 0.82 kb
#include<cstdio>
#define Nmax 1024
using namespace std;

char v[Nmax][Nmax];
unsigned int sc[Nmax][Nmax],sd[Nmax][Nmax],N,K,L,F,m,S;

int main(){
	
	freopen("ferma2.in","r",stdin);
	freopen("ferma2.out","w",stdout);
	
	scanf("%d%d",&N,&K);
	
	for(unsigned int i=1;i<=N;++i)
		for(unsigned int j=1;j<=i;++j){
			scanf("%d",&m);
			v[i][j]=m;
			S+=v[i][j];
			sc[i][j]=sc[i-1][j]+v[i][j];
			sd[i][j]=sd[i-1][j-1]+v[i][j];
	}
		
	L=N-K;
	F=N-L+1;
	m=0x3f3f3f3f;
	
	for(unsigned int l=1;l<=F;++l){
		
		unsigned int s=0;
		for(unsigned int p=1;p<1+L;++p)
				s+=sc[l+L-1][p]-sc[l+p-2][p];
		if(s<m)
				m=s;
		
		for(unsigned int j=2;j<=F&&j<=l;++j){
			
			s-=(sc[l+L-1][j-1]-sc[l+j-3][j-1]);
			s+=sd[l+L-1][j+L-1]-sd[l-1][j-1];
			if(s<m)
				m=s;
			
		}
	}
	printf("%d",S-m);
return 0;
}