제출 #603224

#제출 시각아이디문제언어결과실행 시간메모리
603224Jarif_Rahman카니발 티켓 (IOI20_tickets)C++17
27 / 100
514 ms82000 KiB
#include "tickets.h" #include <bits/stdc++.h> #define pb push_back #define f first #define sc second using namespace std; typedef long long int ll; typedef string str; ll find_maximum(int k, vector<vector<int>> v){ int n = v.size(), m = v[0].size(); vector<ll> mn(n), mx(n); for(int i = 0; i < n; i++) mn[i] = v[i][0], mx[i] = v[i][m-1]; vector<vector<ll>> dp(n, vector<ll>(n/2+1, -1e18)); dp[n-1][0] = -mn[n-1]; dp[n-1][1] = mx[n-1]; for(int i = n-2; i >= 0; i--) for(int j = 0; j <= min(n/2, n-i); j++){ dp[i][j] = dp[i+1][j]-mn[i]; if(j != 0) dp[i][j] = max(dp[i][j], dp[i+1][j-1]+mx[i]); } vector<vector<int>> pos(n, vector<int>(m, -1)); ll ans = dp[0][n/2]; cerr << dp[0][2] << " d\n"; int c = n/2; for(int i = 0; i < n; i++){ if(i == n-1){ if(c) pos[i][m-1] = 0; else pos[i][0] = 0; continue; } if(dp[i][c] == dp[i+1][c]-mn[i]) pos[i][0] = 0; else pos[i][m-1] = 0, c--; } allocate_tickets(pos); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...