Cod sursa(job #636262)

Utilizator sefubanilorSefu Banilor sefubanilor Data 19 noiembrie 2011 18:09:59
Problema Ferma2 Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 0.99 kb
#include<fstream>
using namespace std;

ifstream f("ferma2.in");
ofstream g("ferma2.out");

int n,s,k;
int a[1010][1010],sol[1010][1010],lin[1010][1010],col[1010][1010],diag[1010][1010];
int main()
{
    f>>n>>k;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=i;++j)
        {
            f>>a[i][j],s+=a[i][j];
            lin[i][j]=lin[i][j-1]+a[i][j];
            col[i][j]=col[i-1][j]+a[i][j];
            diag[i][j]=diag[i-1][j-1]+a[i][j];
        }

    k=n-k;

    for(int i=1;i<=k;++i)
        for(int j=1;j<=i;++j)
            sol[1][1]+=a[i][j];

    int sss=sol[1][1];

    for(int i=2;i<=n-k+1;++i)
    {
        sol[i][1]=sol[i-1][1]-diag[i+k-2][k]+lin[i+k-1][k];
        if(sss>sol[i][1]) sss=sol[i][1];
        for(int j=2;j<=i;++j)
        {
            sol[i][j]=sol[i][j-1]+diag[i+k-1][j+k-1]-diag[i-1][j-1]-(col[i+k-1][j-1]-col[i-1][j-1]);
            if(sss>sol[i][j]) sss=sol[i][j];
        }
    }

    g<<s-sss;
    g.close();
    return 0;
}