Pagini recente » Cod sursa (job #3275422) | Cod sursa (job #645482) | Cod sursa (job #2344978) | Cod sursa (job #519374) | Cod sursa (job #3279673)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("ferma2.in");
ofstream fout("ferma2.out");
const int nmax = 1010;
const int inf = 1e9;
struct information{
int value,line,column,diagonal;
};
vector<vector<information>> values(nmax,vector<information> (nmax,{0,0,0,0}));
int n,k,base_triangle,total_sum,ans,aux_triangle;
void read_input(){
fin >> n >> k;
for(int i = 1; i <=n; i++){
for(int j = 1; j <=i; j++){
fin >> values[i][j].value;
total_sum += values[i][j].value;
values[i][j].line = values[i][j-1].line + values[i][j].value;
values[i][j].column = values[i-1][j].column + values[i][j].value;
values[i][j].diagonal = values[i-1][j-1].diagonal + values[i][j].value;
}
}
};
void solve(){
int m = n-k;
for(int i = 1; i <=m; i++){
base_triangle += values[i][i].line;
};
ans = base_triangle;
for(int i = m+1; i <=n; i++){
aux_triangle = base_triangle + values[i][m].line - values[i-1][m].diagonal;
base_triangle = aux_triangle;
ans = min(ans,aux_triangle);
for(int j = 2; j <= i-m+1; j++){
aux_triangle = aux_triangle - (values[i][j-1].column - values[i-m][j-1].column) + (values[i][j+m-1].diagonal - values[i-m][j-1].diagonal);
ans = min(ans,aux_triangle);
}
};
fout << total_sum-ans;
};
int main(){
read_input();
solve();
return 0;
}