#include "aliens.h"
#include <vector>
#include <algorithm>
using namespace std;
long long take_photos(int n, int m, int k, vector<int> r, vector<int> c) {
vector<pair<int, int>> segs;
segs.reserve(n);
for (int i = 0; i < n; i++) {
int l = min(r[i], c[i]);
int r_val = max(r[i], c[i]);
segs.push_back({l, r_val});
}
sort(segs.begin(), segs.end(), [](const auto& a, const auto& b) {
return a.first < b.first || (a.first == b.first && a.second > b.second);
});
vector<pair<int, int>> segments;
segments.reserve(n);
int max_r = -1;
for (const auto& seg : segs) {
if (seg.second > max_r) {
segments.push_back(seg);
max_r = seg.second;
}
}
if (segments.empty()) return 0;
int s = segments.size();
k = min(k, s);
const long long INF = 1e18;
vector<long long> dp(s + 1, INF);
vector<long long> ndp(s + 1, INF);
dp[0] = 0;
for (int photos = 1; photos <= k; photos++) {
fill(ndp.begin(), ndp.end(), INF);
for (int i = photos; i <= s; i++) {
for (int prev = photos - 1; prev < i; prev++) {
if (dp[prev] >= INF) continue;
int left = segments[prev].first;
int right = segments[i-1].second;
long long side = (long long)(right - left + 1);
long long cost = side * side;
if (prev > 0) {
int prev_right = segments[prev-1].second;
if (prev_right >= left) {
long long overlap = (long long)(prev_right - left + 1);
cost -= overlap * overlap;
}
}
ndp[i] = min(ndp[i], dp[prev] + cost);
}
}
swap(dp, ndp);
}
return dp[s];
}
컴파일 시 표준 에러 (stderr) 메시지
aliens.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
aliens_c.h:1:9: warning: #pragma once in main file
1 | #pragma once
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |