#include <bits/stdc++.h>
#include "aliens.h"
#define ll long long
using namespace std;
constexpr static ll INF = 1e15;
vector<array<int, 2>> get_cells(const vector<int>& r, const vector<int>& c) {
const int n = r.size();
vector<array<int, 2>> cells;
for (int i = 0; i < n; i++) {
if (r[i] > c[i])
cells.push_back({c[i], r[i]});
else
cells.push_back({r[i], c[i]});
}
sort(cells.begin(), cells.end(), [] (array<int, 2> a, array<int, 2> b) -> bool {
return (a[1] + a[0]) <= (b[1] + b[0]);
});
cells.erase(unique(cells.begin(), cells.end()), cells.end());
vector<array<int, 2>> final_cells;
int maxc = -1;
for (auto [r, c] : cells) {
if (maxc >= c)
continue;
maxc = c;
final_cells.push_back({r, c});
}
return final_cells;
}
long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) {
assert(n <= 500);
vector<array<int, 2>> cells = get_cells(r, c);
n = cells.size();
// cout << k << "\n";
vector<vector<ll>> dp(n+1, vector<ll>(k+1, INF));
for (int i = 0; i <= k; i++) {
dp[0][i] = 0;
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= k; j++) {
ll maxc = 0;
ll minr = INF;
for (int l = i - 1; l >= 0; l--) {
minr = min<ll>(minr, cells[l][0]);
maxc = max<ll>(maxc, cells[l][1]);
dp[i][j] = min(dp[i][j],
dp[l][k-1] + (maxc - minr + 1) * (maxc - minr + 1)
- ((l == 0) ? 0 : (cells[l-1][1] - minr + 1) * (cells[l-1][1] - minr + 1))
);
// cout << i << " " << j << " " << l << " " << " " << maxc << " " << minr << " " << dp[i][j] << "\n";
}
}
}
/*
for (auto [r, c] : cells) {
cout << r << " " << c << "\n";
}
*/
return dp[n][k];
}
컴파일 시 표준 에러 (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... |