Submission #1291220

#TimeUsernameProblemLanguageResultExecution timeMemory
1291220sahtehesap123Aliens (IOI16_aliens)C++20
0 / 100
1 ms504 KiB
#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]; }

Compilation message (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...