Cod sursa(job #805039)

Utilizator robertpoeRobert Poenaru robertpoe Data 30 octombrie 2012 20:38:54
Problema Ferma2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<cstdio>
#include<fstream>
#define DIMM 1001
using namespace std;
ifstream f("ferma2.in");
ofstream g("ferma2.out");
int A[1001][1001];
int o[1001][1001];
int d[1001][1001],sol[1001][1001];
int res=1000000000,i,j,k,n,sum=0;
int main()
{
    f>>n>>k;
    for(i=1;i<=n;++i)
        for (j=1;j<=i;++j)
        {
            f>>A[i][j];
            sum+=A[i][j];
            o[i][j]=A[i][j]+o[i][j-1];
            d[i][j]=A[i][j]+d[i-1][j-1];
            A[i][j]+=A[i-1][j];
        }
    k=n-k;
    for (i=1;i<=k;++i)
        sol[k][k]+=o[i][i];
    for (i=k+1;i<=n;++i)
    {
        sol[i][k]=sol[i-1][k]+o[i][k]-d[i-1][k];
        for (j=k+1;j<=n;++j)
            sol[i][j]=sol[i][j-1]-A[i][j-k]+A[i-k][j-k]+d[i][j]-d[i-k][j-k];
    }
    for (i=k;i<=n;++i)
        for (j=k;j<=i;++j)
            if (sol[i][j]<res)
                res=sol[i][i];
    g<<sum-res;
    return 0;
}