Submission #885958

#TimeUsernameProblemLanguageResultExecution timeMemory
885958normankr07Aliens (IOI16_aliens)C++17
4 / 100
1 ms604 KiB
#include <bits/stdc++.h> #include "aliens.h" using ll = long long; using namespace std; long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) { // Sub1 if (n <= k && n <= 50 && m <= 100) { vector<vector<int>> arr(m + 3, vector<int>(m + 3)); for (int i = 0; i < n; i++) { int xx = r[i], yy = c[i]; for (int x = min(xx, yy); x <= max(xx, yy); x++) for (int y = min(xx, yy); y <= max(xx, yy); y++) { arr[x][y]++; } } int cnt = 0; for (int x = 0; x <= m; x++) for (int y = 0; y <= m; y++) cnt += (arr[x][y] != 0); return cnt; } bool check_s2 = 1; for (int i = 0; i < n; i++) check_s2 &= (r[i] == c[i]); if (check_s2) { // Observation : cover (l, l), (r, r) -> cover all [(l, l), (l + 1, l + 1), ..., (r, r)] // For each optimal square that contain some point, the (l, l) must match one of the (r_i, r_i); // Sort by r_i + remove all duplicate -> Segment cover on diagonal such that sum of (r - l + 1)^2 for all ranges is minimal // dp[i][k] -> Cover first i points using k segment // dp[i][k] = min(all(dp[i'][k-1]) + (r[i-1] - l[i'] + 1) ^ 2; vector<pair<int, int>> pos; for (int i = 0; i < n; i++) { pos.push_back(make_pair(r[i], c[i])); } sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin(), pos.end()), pos.end()); vector<vector<int>> dp(int(pos.size() + 3), vector<int>(k + 3, 0)); n = pos.size(); for (int i = 0; i < n; i++) { for (int dk = 1; dk <= k; dk++) { int mindp = 1e9, minindex = -1; for (int ii = 0; ii < i; ii++) if (dp[ii][dk - 1] < mindp) { minindex = ii; mindp = dp[ii][dk - 1]; } long long dd = max(0, (pos[i - 1].first - pos[minindex].second + 1) * (pos[i - 1].first - pos[minindex].second + 1)); dp[i][dk] = mindp + dd * dd; } } return dp[n - 1][k]; } }

Compilation message (stderr)

aliens.cpp: In function 'long long int take_photos(int, int, int, std::vector<int>, std::vector<int>)':
aliens.cpp:66:1: warning: control reaches end of non-void function [-Wreturn-type]
   66 | }
      | ^
#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...