Submission #631843

#TimeUsernameProblemLanguageResultExecution timeMemory
631843rainliofficialAliens (IOI16_aliens)C++17
Compilation error
0 ms0 KiB
#include "aliens.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> pii; template<class T> bool ckmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; } template<class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; } #define sz(x) (int)x.size() const int MAXN = 2e5+5, INF = 1e9; struct Point{ int r, c, id, cnt; bool operator<(const Point& o) const{ if (r != o.r){ return r < o.r; } return c < o.c; } }; bool byr(const Point& a, const Point& b){ return a.r != b.r ? a.r < b.r : a.c > b.c; // sort by smaller row, then by greater col } bool byc(const Point& a, const Point& b){ return a.c != b.c ? a.c < b.c : a.r < b.r; // smaller col, smaller row } long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) { // reflect the points under the diag vector<Point> arr; int tot = 0; set<Point> allPoints; for (int i=0; i<n; i++){ if (r[i] > c[i]){ swap(r[i], c[i]); } Point cur = {r[i], c[i], tot, 1}; auto it = allPoints.find(cur); if (it != allPoints.end()){ arr[(*it).id].cnt++; }else{ arr.push_back(cur); allPoints.insert(cur); tot++; } } n = tot; sort(arr.begin(), arr.end(), byr); set<Point, decltype(&byc)> st(&byc); set<Point> seen; for (int i=0; i<n; i++){ auto it = seen.lower_bound(arr[i]); if (it != seen.end()){ Point upd = *it; upd.cnt++; seen.erase(it); seen.insert(upd); }else{ seen.insert(arr[i]); } } arr.clear(); for (Point x : seen){ // cout << x.r << " " << x.c << " " << x.id << " " << x.cnt << "\n"; arr.push_back(x); } n = sz(arr); // run dp vector<vector<int>> dp(n+1, vector<int>(k+1, INF)); // dp[i][j] = max cover up to ith point after taking j pictures dp[0][0] = 0; for (int i=1; i<=n; i++){ for (int j=1; j<=k; j++){ for (int ip=1; ip<=i; ip++){ ckmin(dp[i][j], dp[i-1][j-1] + (arr[i-1].c - arr[ip-1].r + 1)*(arr[i-1].c - arr[ip-1].r + 1)); } } } return dp[n][k]; } int main(){ cin.tie(0); ios_base::sync_with_stdio(0); // freopen("file.in", "r", stdin); // freopen("file.out", "w", stdout); // vector<int> r = {0, 4, 4, 4, 4}, c = {3, 4, 6, 5, 6}; // cout << take_photos(5, 7, 2, r, c) << "\n"; } /** * Debugging checklist: * - Reset everything after each TC * - Integer overflow, index overflow * - Special cases? */

Compilation message (stderr)

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