제출 #1289952

#제출 시각아이디문제언어결과실행 시간메모리
1289952yasiAliens (IOI16_aliens)C++20
25 / 100
2096 ms22340 KiB
#include <vector> #include <algorithm> #include <iostream> using namespace std; const long long INF = 1e18; struct Interval { int l, r; bool operator<(const Interval &other) const { return l < other.l || (l == other.l && r > other.r); } }; vector<Interval> clearedIntervals(vector<Interval> &intervals) { sort(intervals.begin(), intervals.end()); vector<Interval> cleared; cleared.push_back({-1, -1}); for (int i = 0; i < intervals.size(); i++) { if (cleared.back().r < intervals[i].r) cleared.push_back(intervals[i]); } return cleared; } long long sqr(long long x) { return x * x; } long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) { vector<Interval> initialIntervals; for (int i = 0; i < n; i++) { initialIntervals.push_back({min(r[i], c[i]), max(r[i], c[i])}); } vector<Interval> intervals = clearedIntervals(initialIntervals); n = intervals.size() - 1; vector<vector<long long>> dp(n + 1, vector<long long>(k + 1, 0)); for (int i = 1; i <= n; i++) dp[i][0] = INF; for (int i = 1; i <= n; i++) { for (int j = 1; j <= k; j++) { dp[i][j] = INF; for (int t = 1; t <= i; t++) { dp[i][j] = min(dp[i][j], dp[t - 1][j - 1] + sqr(intervals[i].r - intervals[t].l + 1) - sqr(max(0, intervals[t - 1].r - intervals[t].l + 1))); } } } long long ans = INF; for (int j = 0; j <= k; j++) ans = min(ans, dp[n][j]); return ans; }

컴파일 시 표준 에러 (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 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...