Cod sursa(job #2336131)

Utilizator ciutanpCiuta Andrei Calin ciutanp Data 4 februarie 2019 20:11:41
Problema Ferma2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<bits/stdc++.h>
#define NMAX 1001
using namespace std;

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

int n,mini,sol,k;
int ma[NMAX][NMAX],dp[NMAX][NMAX],v[NMAX][NMAX],o[NMAX][NMAX],d[NMAX][NMAX];

int main()
{
    f>>n>>k;

    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=i;++j)
        {
            f>>ma[i][j];
            sol+=ma[i][j];
            v[i][j]+=v[i-1][j]+ma[i][j];
            o[i][j]+=o[i][j-1]+ma[i][j];
            d[i][j]+=d[i-1][j-1]+ma[i][j];
        }
    }

    for(int i=1;i<=n-k;++i)
    {
        for(int j=1;j<=i;++j)
        {
            dp[1][1]+=ma[i][j];
        }
    }
    int dis=n-k;
    mini=dp[1][1];

    for(int i=2;i+dis-1<=n;++i)
    {
        dp[i][1]=dp[i-1][1]-d[i+dis-2][dis]+o[i+dis-1][dis];
        mini=min(dp[i][1],mini);
        for(int j=2;j<=i;++j)
        {
            dp[i][j]=dp[i][j-1]+d[i+dis-1][j+dis-1]-d[i-1][j-1]-v[i+dis-1][j-1]+v[i-1][j-1];
             mini=min(dp[i][j],mini);
        }
    }
    //g<<sol<<' '<<mini<<'\n';
    g<<sol-mini;

}