Pagini recente » Cod sursa (job #2021961) | Cod sursa (job #1979130) | Cod sursa (job #1033380) | Cod sursa (job #120833) | Cod sursa (job #638168)
Cod sursa(job #638168)
Utilizator |
roots1 roots |
Data |
20 noiembrie 2011 19:17:44 |
Problema |
Ferma2 |
Scor |
10 |
Compilator |
cpp |
Status |
done |
Runda |
.com 2011 |
Marime |
1.22 kb |
#include <fstream>
using namespace std;
ifstream in;
ofstream out;
int v[1010][1010];
int a[1010][1010];
int b[1010][1010];
int c[1010][1010];
int main()
{
int M,N,K,S,min;
in.open("ferma2.in");
in>>N>>K;
for(int i=1;i<=N;++i)
for(int j=1;j<=i;++j)
in>>v[i][j];
in.close();
for(int i=1;i<=N;++i)
for(int j=1;j<=i;++j)
a[i][j]=a[i-1][j]+v[i][j];
for(int i=1;i<=N;++i)
for(int j=1;j<=i;++j)
a[i][j]+=a[i][j-1];
for(int i=N;i>0;--i)
for(int j=1;j<=i;++j)
b[i][j]=b[i][j-1]+v[i][j];
for(int i=N;i>0;--i)
for(int j=1;j<=i;++j)
b[i][j]+=b[i+1][j+1];
for(int j=N;j>0;--j)
for(int i=N;i>=N-j+1;--i)
c[i][j-N+i]=c[i+1][j-N+i+1]+v[i][j];
for(int j=N;j>0;--j)
for(int i=N;i>=N-j+1;--i)
c[i][j-N+i]+=c[i-1][j-N+i];
M=N-K;
S=a[N][N];
min=S;
for(int i=1;i<=M;++i)
for(int j=1;j<=i;++j)
if(min>S-a[i+M-1][j-1]-b[i+M][j+M]-c[i-1][j])
min=S-a[i+M-1][j-1]-b[i+M][j+M]-c[i-1][j];
out.open("ferma2.out");
out<<S-min<<'\n';
out.close();
return 0;
}