제출 #569915

#제출 시각아이디문제언어결과실행 시간메모리
569915SSRSFireworks (APIO16_fireworks)C++14
19 / 100
27 ms672 KiB
#include <bits/stdc++.h> using namespace std; const int INF = 1000000; int main(){ int N, M; cin >> N >> M; vector<int> P(N + M), C(N + M); for (int i = 1; i < N + M; i++){ cin >> P[i] >> C[i]; P[i]--; } vector<vector<int>> c(N + M); for (int i = 1; i < N + M; i++){ c[P[i]].push_back(i); } vector<vector<int>> dp(N + M, vector<int>(301)); for (int i = N; i < N + M; i++){ dp[i][0] = 0; for (int j = 1; j <= 300; j++){ dp[i][j] = INF; } } for (int i = N - 1; i >= 0; i--){ for (int j : c[i]){ vector<int> dp2(301, INF); for (int k = 0; k <= 300; k++){ for (int l = 0; k + l <= 300; l++){ dp2[k + l] = min(dp2[k + l], dp[j][k] + abs(C[j] - l)); } } for (int k = 0; k <= 300; k++){ dp[i][k] += dp2[k]; } } } int ans = INF; for (int i = 0; i <= 300; i++){ ans = min(ans, dp[0][i]); } cout << ans << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...