Submission #1118991

#TimeUsernameProblemLanguageResultExecution timeMemory
1118991epicci23Aliens (IOI16_aliens)C++17
0 / 100
2100 ms336 KiB
#include "bits/stdc++.h" #define ll long long #define all(v) v.begin() , v.end() #define sz(a) (ll)a.size() using namespace std; const ll INF = (ll) 1e18 + 5; vector<ll> dp,ndp; vector<array<ll,2>> v; void f(ll l,ll r,ll optl,ll optr){ if(l>r) return; ll mid = (l+r)/2; ll cur = INF, best = -1; for(ll i = min(mid,optr) ; i >= max(1LL,optl); i--){ ll b = v[mid][1]; ll a = v[i][0]; ll d = (i > 1 ? v[i - 1][1] : -INF); if(dp[i-1] + (b-a+1) * (b-a+1) - max(0LL,d-a+1) * max(0LL,d-a+1) < cur){ best = i; cur = dp[i-1] + (b-a+1) * (b-a+1) - max(0LL,d-a+1) * max(0LL,d-a+1); } } if(cur==INF) while(1){} ndp[mid] = cur; f(l,mid-1,optl,best) , f(mid+1,r,best,optr); } ll take_photos(int _n,int _m,int _k,vector<int> r,vector<int> c){ ll n = _n, m = _m, k = _k,ans = INF; for(ll i=0;i<n;i++){ ll a=r[i],b=c[i]; if(a>b) swap(a,b); v.push_back({a,b}); } sort(all(v)); vector<array<ll,2>> xdd; xdd.push_back({-1LL,-1LL}); for(ll i=0;i<n;i++){ if(v[i][0] == xdd.back()[0]){ xdd.pop_back(); xdd.push_back(v[i]); } else if(xdd.back()[1] < v[i][1]) xdd.push_back(v[i]); } swap(v,xdd); n = sz(v) - 1; dp.assign(n+5,INF); dp[0] = 0; for(ll i=1;i<=k;i++){ ndp.assign(n+5,INF); f(1,n,1,n); swap(dp,ndp); ans=min(ans,dp[n]); } return ans; } /*void _(){ int n,m,k; cin >> n >> m >> k; for(int i=0;i<n;i++){ int a,b; cin >> a >> b; if(a>b) swap(a,b); v.push_back({a,b}); } ll ans = INF; sort(all(v)); vector<array<ll,2>> xdd; xdd.push_back({-1LL,-1LL}); for(int i=0;i<n;i++){ if(v[i][0] == xdd.back()[0]){ xdd.pop_back(); xdd.push_back(v[i]); } else if(xdd.back()[1] < v[i][1]) xdd.push_back(v[i]); } swap(v,xdd); n = sz(v) - 1; dp.assign(n+5,INF); dp[0] = 0; for(int i=1;i<=k;i++){ ndp.assign(n+5,INF); f(1,n,1,n); swap(dp,ndp); ans=min(ans,dp[n]); } cout << ans << '\n'; } int32_t main(){ cin.tie(0); ios::sync_with_stdio(0); int tc=1;//cin >> tc; while(tc--) _(); return 0; }*/

Compilation message (stderr)

aliens.cpp: In function 'long long int take_photos(int, int, int, std::vector<int>, std::vector<int>)':
aliens.cpp:33:14: warning: unused variable 'm' [-Wunused-variable]
   33 |   ll n = _n, m = _m, k = _k,ans = INF;
      |              ^
#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...