Submission #1302261

#TimeUsernameProblemLanguageResultExecution timeMemory
1302261souvenir_vayneAliens (IOI16_aliens)C++20
41 / 100
2092 ms4928 KiB
#include <bits/stdc++.h> #include "aliens.h" #define pb push_back #define F0R(var) for (; (var) > 0; --(var)) #define endl '\n' template<typename... Ts> void debug_out(const Ts&... ts) { std::cerr << "DEBUG:"; if constexpr (sizeof...(Ts) > 0) { ((std::cerr << ' ' << ts), ...); } std::cerr << '\n'; } #define f first #define FINOUT cin.tie(0), cout.tie(0), ios::sync_with_stdio(0) #define s second #define debug(...) debug_out(__VA_ARGS__) #define all(x) x.begin(), x.end() using namespace std; typedef pair<long long, long long> pii; typedef vector<long long> vi; long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) { vector<int> maxR(m + 1); iota(all(maxR), -1); for(long long i = 0; i < n; i++) { if(r[i] > c[i]) swap(r[i], c[i]); r[i]++, c[i]++; maxR[r[i]] = max(maxR[r[i]], c[i]); } int mx = 0; vector<pii> intervals; intervals.push_back({0, 0}); for(int i = 1; i <= m; i++) { if(maxR[i] < i || maxR[i] <= mx) continue; mx = maxR[i]; intervals.push_back({i, mx}); } n = intervals.size(); vector<pii> dp(n + 1, {1e13, 1}); long long ini = 0, mid, end = 1e13, ans; auto w = [&](int j, int i) -> pii { int sz = (intervals[i].s - intervals[j + 1].f + 1); int overlap = (intervals[j + 1].f <= intervals[j].s ? intervals[j].s - intervals[j + 1].f + 1 : 0); return {dp[j].f + 1LL * sz * sz + mid - 1LL * overlap * overlap, dp[j].s + 1}; }; while(ini <= end) { mid = (ini + end) / 2; fill(all(dp), pii{1e13, 1}); dp[0] = {0, 0}; for(int i = 1; i < n; i++) { for(int j = 0; j < i; j++) { dp[i] = min(dp[i], w(j, i)); } } if(dp[n - 1].s <= k) { ans = dp[n - 1].f - 1LL * k * mid; end = mid - 1; } else ini = mid + 1; } return ans; }

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...