Pagini recente » Cod sursa (job #1559062) | Cod sursa (job #1155117) | Cod sursa (job #2125469) | Cod sursa (job #3130074) | Cod sursa (job #1281485)
#include<fstream>
#include<iomanip>
using namespace std;
ifstream in("ferma2.in");
ofstream out("ferma2.out");
#define dim 1005 //105
int mat[dim][dim], lin[dim][dim], col[dim][dim]; //Col este inutil, dar...
int n,lung;
void afismat(int matr[][dim])
{
int i,j;
for(i=1;i<=n;++i)
{
for(j=1;j<=n;++j) out<<setw(4)<<matr[i][j];
out<<"\n";
}
out<<"\n";
}
int calcsuma(int y, int x, int dist)
{
int su,i,j;
su=0;
for(i=0;i<dist;++i)
su+= lin[y+i][x+i] - lin[y+i][x-1];
//for(j=0;j<=i;++j)
//su+= mat[y+i][x+j];
return su;
}
int main()
{
int i,j,k,n2,su,sumin,y,x,sutot;
in>>n>>k;
for(i=1;i<=n;++i)
for(j=1;j<=i;++j)
in>>mat[i][j];
for(i=1;i<=n;++i)
{
lin[i][0]=0;
col[0][i]=0;
}
for(i=1;i<=n;++i)
for(j=1;j<=n;++j)
{
lin[i][j]=lin[i][j-1] + mat[i][j];
col[i][j]=col[i-1][j] + mat[i][j];
}
//afismat(mat);
//afismat(lin);
//afismat(col);
y=1;
x=1;
lung=n-k;
sumin=calcsuma(1, 1, lung);
for(i=1;i<=k+1;++i)
for(j=1;j<=i;++j)
{
su=calcsuma(i, j, lung);
//out<<"su ("<<i<<", "<<j<<") = "<<su<<"\n";
if(su<sumin)
{
sumin=su;
y=i;
x=j;
}
}
//out<<"Sumin="<<sumin<<"\n";
//out<<"("<<y<<", "<<x<<")\n\n";
sutot=calcsuma(1, 1, n);
//out<<"Final: "<<(sutot-sumin)<<"\n";
out<<(sutot-sumin);
return 0;
}