#include "aliens.h"
#include <vector>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct interval {
int l, r;
bool operator < (interval a) {
if (l == a.l)
return r > a.r;
return l < a.l;
}
};
const int MAX_N = 5000;
const int MAX_K = 5000;
const long long INF = 1e18;
long long dp[MAX_N][MAX_K];
interval v[MAX_N + 1];
long long take_photos(int n, int m, int k, vector<int> R, vector<int> C) {
vector<interval> rc(n);
for (int i = 0; i < n; i++) {
if (R[i] > C[i])
swap(R[i], C[i]);
C[i]++;
rc[i] = {R[i], C[i]};
}
sort(rc.begin(), rc.end());
n = 0;
int maxR = -1;
for (interval a: rc) {
// printf("%d %d\n", a.l, a.r);
if (a.r > maxR) {
v[++n] = a;
maxR = a.r;
}
}
for (int i = 1; i <= n; i++)
dp[i][0] = INF;
for (int i = 1; i <= n; i++) {
for (int l = 1; l <= k; l++) {
dp[i][l] = INF;
for (int j = 1; j <= i; j++) {
long long len = (v[i].r - v[j].l);
long long over = max(0, (v[j - 1].r - v[j].l));
dp[i][l] = min(dp[i][l], dp[j - 1][l - 1] + len * len - over * over);
}
// printf("%d %d %lld\n", i, l, dp[i][l]);
}
}
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... |