제출 #657840

#제출 시각아이디문제언어결과실행 시간메모리
657840benjaminkleynAliens (IOI16_aliens)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define COL first #define ROW second vector<pair<ll,ll>> pts, dp; pair<ll,ll> eval(int i, int j, ll cost) { ll new_square = (pts[i].COL - pts[j+1].ROW + 1); ll overlap = max(pts[j].COL - pts[j+1].ROW + 1, 0LL); ll total_area = new_square * new_square - overlap * overlap; return {dp[j].first + total_area + cost, dp[j].second + 1}; } pair<ll,ll> calc(int n, ll cost) { dp[0] = {0, 0}; for (int i = 1; i <= n; i++) { dp[i] = {LLONG_MAX, LLONG_MAX}; for (int j = 0; j < i; j++) dp[i] = min(dp[i], eval(i, j, cost)); } return dp[n]; } ll take_photos(int n, int m, int k, vector<int> r, vector<int> c) { vector<pair<ll,ll>> temp_pts(n); for (int i = 0; i < n; i++) { if (r[i] > c[i]) swap(r[i], c[i]); temp_pts[i] = {c[i], r[i]}; } sort(temp_pts.begin(), temp_pts.end()); pts.push_back({-1, -1}); for (pair<ll,ll> pt : temp_pts) { while (pts.size() && pts.back().ROW >= pt.ROW) pts.pop_back(); pts.push_back(pt); } n = pts.size() - 1; dp.resize(n + 1); ll lo = 0, hi = 1e12, res = 1e12, mid; while (lo <= hi) { mid = (lo + hi) / 2; calc(n, mid); if (dp[n].second <= k) hi = mid - 1, res = mid; else lo = mid + 1; } calc(n, res); return dp[n].first - k * res; } int main() { int n, m, k; cin >> n >> m >> k; vector<int> r(n), c(n); for (int i = 0; i < n; i++) cin >> r[i] >> c[i]; cout << take_photos(n, m, k, r, c) << '\n'; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

/usr/bin/ld: /tmp/ccr6vdR6.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccv6MaE6.o:aliens.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status