Cod sursa(job #635589)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 19 noiembrie 2011 13:21:20
Problema Ferma2 Scor 100
Compilator cpp Status done
Runda .com 2011 Marime 1.11 kb
#include <cstdio>

#define NMax 1005

using namespace std;

int N, K, S, TotalS;
int Sum[NMax][NMax], MSum[NMax][NMax], DSum[NMax][NMax];

inline int Min (int a, int b)
{
    if (a<b)
    {
        return a;
    }
    return b;
}

void Read ()
{
    freopen ("ferma2.in", "r", stdin);
    scanf ("%d %d", &N, &K);
    for (int i=1; i<=N; ++i)
    {
        for (int j=1; j<=i; ++j)
        {
            scanf ("%d", &Sum[i][j]);
            MSum[i][j]=Sum[i][j]+MSum[i-1][j]+MSum[i][j-1]-MSum[i-1][j-1];
            DSum[i][j]=Sum[i][j]+DSum[i-1][j-1];
            TotalS+=Sum[i][j];
            Sum[i][j]+=(DSum[i-1][j-1]+Sum[i][j-1]);
        }
    }
    S=TotalS;
}

void Solve ()
{
    int L=N-K;
    for (int i=L; i<=N; ++i)
    {
        for (int j=L; j<=i; ++j)
        {
            int CurrentS=Sum[i][j]-MSum[i][j-L]+MSum[i-L][j-L]-Sum[i-L][j-L];
            S=Min (S, CurrentS);
        }
    }
}

void Print ()
{
    freopen ("ferma2.out", "w", stdout);
    printf ("%d\n", TotalS-S);
}

int main()
{
    Read ();
    Solve ();
    Print ();
    return 0;
}