1866D - Digital Wallet - CodeForces Solution


dp greedy

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
const int N=100005,M=998244353;
const ll inf=100000000000000000ll;
const ld PI=3.141592653589793238;
int n,a[11][N],m,k;
long long dp[11][N][12];
long long dfs(int i,int j,int l){
    if(i>n)
        return dfs(1,j+1,max(l,j-k+2));
    if(j>m)
        return 0;
    if(dp[i][j][j-l+1]!=-1)
        return dp[i][j][j-l+1];
    if(l<=j&&l<=m-k+1)
        return dp[i][j][j-l+1]=max({dp[i][j][j-l+1],dfs(i+1,j,l+1)+a[i][j],dfs(i+1,j,l)});
    else
        return dp[i][j][j-l+1]=dfs(i+1,j,l);
}
int main() {
#ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
#endif
    scanf("%d %d %d",&n,&m,&k);
    memset(dp,-1,sizeof(dp));
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            scanf("%d",&a[i][j]);
    cout<<dfs(1,1,1);
}


Comments

Submit
0 Comments
More Questions

67A - Partial Teacher
116A - Tram
1472B - Fair Division
1281C - Cut and Paste
141A - Amusing Joke
112A - Petya and Strings
677A - Vanya and Fence
1621A - Stable Arrangement of Rooks
472A - Design Tutorial Learn from Math
1368A - C+=
450A - Jzzhu and Children
546A - Soldier and Bananas
32B - Borze
1651B - Prove Him Wrong
381A - Sereja and Dima
41A - Translation
1559A - Mocha and Math
832A - Sasha and Sticks
292B - Network Topology
1339A - Filling Diamonds
910A - The Way to Home
617A - Elephant
48A - Rock-paper-scissors
294A - Shaass and Oskols
1213A - Chips Moving
490A - Team Olympiad
233A - Perfect Permutation
1360A - Minimal Square
467A - George and Accommodation
893C - Rumor