Submission #1144118

#TimeUsernameProblemLanguageResultExecution timeMemory
1144118ach00Aliens (IOI16_aliens)C++20
0 / 100
1 ms2376 KiB
#include <bits/stdc++.h> #include "aliens.h" using namespace std; typedef long long ll; #define INF 9000000000000 #define DP dp[i][p] #define mN 520 #define mK 520 int N,M,K; vector<ll> lower; vector<ll> upper; vector<pair<ll,ll>> points; ll bar(ll i) { return lower[i];} ll area(ll u, ll l) { return (u-l)*(u-l); } ll overlap(ll j, ll maxbar) { if(j == N) return 0; return (upper[j]-maxbar)*(upper[j]-maxbar); } vector<vector<ll>> dp(mN, vector<ll>(mK, -1)); ll solve(ll i, ll p) { if(i == N) return 0; if(p == 0) return INF; if(DP != -1) return DP; ll maxbar = bar(i); int k = i; ll ans = INF; while(k+1 != N && upper[k+1] == i) { maxbar = max(maxbar, bar(k)); k++; } for(int j = k; j < N; j++) { maxbar = max(maxbar, bar(j)); while(j+1 != N && bar(j+1) <= maxbar) j++; ll res = area(upper[i], maxbar) + solve(j+1, p-1) - overlap(j+1, maxbar); ans = min(ans, res); } return (DP = ans); } long long take_photos(int n, int m, int k, std::vector<int> r, std::vector<int> c) { N = n; M = m; K = k; vector<ll> Lower; vector<ll> Upper; vector<pair<ll,ll>> Points; for(int i = 0; i < N; i++) { if(r[i] > c[i]) swap(r[i], c[i]); c[i] += 1; Points.push_back({r[i], c[i]}); Lower.push_back({c[i]}); Upper.push_back({r[i]}); } vector<pair<ll,ll>> sortation; for(int i = 0; i < n; i++) { sortation.push_back({Upper[i], i}); } sort(sortation.begin(), sortation.end()); for(int i = 0; i < n; i++) { upper.push_back(Upper[sortation[i].second]); lower.push_back(Lower[sortation[i].second]); points.push_back(Points[sortation[i].second]); } return solve(0, 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...