제출 #1081927

#제출 시각아이디문제언어결과실행 시간메모리
1081927raphael_heuchl선물상자 (IOI15_boxes)C++14
25 / 100
2068 ms12328 KiB
#include "boxes.h" #include <vector> #include <algorithm> #include <map> #include <iostream> #define INF 1'000'000'000'000'000'000 std::vector<long long> people; long long n, l, k; long long dist(long long curr) { return std::min(l - people[curr], people[curr]); } long long dp[1005][1005]; long long f(long long curr, long long pres) { if (dp[curr][pres]) return dp[curr][pres]; if (curr == n) return dp[curr][pres] = dist(curr); long long optionA = pres ? std::abs(people[curr] - people[curr+1]) + f(curr + 1, pres - 1) : INF; long long optionB = dist(curr) + dist(curr + 1) + f(curr + 1, k-1); return dp[curr][pres] = std::min(optionA, optionB); } long long delivery(int N, int K, int L, int p[]) { n = N, k = K, l = L; people.push_back(0); for (int i = 0; i < N; ++i) people.push_back(p[i]); std::sort(people.begin(), people.end()); for (int i = 0; i <= n; ++i) for (int j = 0; j < k; ++j) std::cerr << people[i] << " " << i << " " << j << " " << f(i, j) << "\n"; return f(0, K - 1); }
#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...