Submission #733223

#TimeUsernameProblemLanguageResultExecution timeMemory
733223penguin133Raisins (IOI09_raisins)C++17
100 / 100
292 ms72044 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pi pair<int, int> #define pii pair<int, pi> #define fi first #define se second #ifdef _WIN32 #define getchar_unlocked _getchar_nolock #endif mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); int memo[55][55][55][55]; int n, m, A[55][55], P[55][55]; int dp(int x1, int x2, int y1, int y2){ if(x1 == x2 && y1 == y2)return 0; if(memo[x1][x2][y1][y2] != -1)return memo[x1][x2][y1][y2]; int ans = 1e18; for(int i=x1;i<x2;i++){ ans = min(ans, dp(x1, i, y1, y2) + dp(i+1, x2, y1, y2)); } for(int i=y1;i<y2;i++){ ans = min(ans, dp(x1, x2, y1, i) + dp(x1, x2, i+1, y2)); } return memo[x1][x2][y1][y2] = ans + (P[x2][y2] - P[x1-1][y2] - P[x2][y1-1] + P[x1-1][y1-1]); } void solve(){ cin >> n >> m; for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin >> A[i][j], P[i][j] = P[i-1][j] + P[i][j-1] + A[i][j] - P[i-1][j-1]; memset(memo, -1, sizeof(memo)); cout << dp(1, n, 1, m) << '\n'; } main(){ ios::sync_with_stdio(0);cin.tie(0); int tc = 1; //cin >> tc; for(int tc1=1;tc1<=tc;tc1++){ // cout << "Case #" << tc1 << ": "; solve(); } }

Compilation message (stderr)

raisins.cpp:37:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   37 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...