Submission #9746

#TimeUsernameProblemLanguageResultExecution timeMemory
9746shashackOn grid (kriii2_O)C++14
0 / 4
0 ms1676 KiB
#include <iostream> #include <string> #include <cstring> #include <fstream> #include <sstream> #include <cstdlib> #include <vector> #include <queue> #include <algorithm> #include <map> #include <set> #include <functional> #include <bitset> #include <limits.h> using namespace std; #define MP make_pair #define REP(v, repeat) for(int v=0; v<(repeat); ++v) #define REPD(v, repeat) for(int v=(repeat)-1; v>=0; --v) #define FOR(v, pos, end) for(int v=(pos); v<=(end); ++v) #define FORD(v, pos, end) for(int v=(pos); v>=(end); --v) #define ROUNDING(x, dig) (floor((x) * pow(10, dig) + 0.11f) / pow(10, dig)) typedef pair<int, int> PI; typedef vector <bool> VB; typedef vector <int> VI; typedef vector <VI> VVI; typedef vector <vector <PI>> ADJ; typedef vector <string> VS; typedef long long ll; typedef unsigned long long ull; const int INF = 987654321; int r, c; vector <vector <ll>> table, cache; ll maxScore(const int & y, const int & x) { if (x == 1 || y == 1) return table[y][x]; ll & ret = cache[y][x]; if (ret != -INF) return ret; FOR(i, 1, y - 1) { FOR(j, 1, x - 1) { ret = max(ret, maxScore(i, j) + (table[y][x] - table[i][x] - table[y][j] + table[i][j])); } } return ret; } int main() { #ifdef _CONSOLE freopen("input.txt", "r", stdin); //freopen("output.txt", "w+", stdout); #endif scanf("%d%d", &r, &c); table = vector <vector <ll>>(r + 1, vector <ll>(c + 1, 0)); cache = vector <vector <ll>>(r + 1, vector <ll>(c + 1, -INF)); FOR(i, 1, r) FOR(j, 1, c) scanf("%lld", &table[i][j]); FOR(i, 1, r) FOR(j, 1, c) table[i][j] = table[i][j] + table[i - 1][j] + table[i][j - 1] - table[i - 1][j - 1]; printf("%lld\n", maxScore(r, c)); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...