Submission #42803

#TimeUsernameProblemLanguageResultExecution timeMemory
42803funcsrAliens (IOI16_aliens)C++14
4 / 100
644 ms7400 KiB
#include "aliens.h" #include <iostream> #include <vector> #include <string> #include <cassert> #include <algorithm> using namespace std; typedef pair<int, int> P; #define rep(i, n) for (int i=0; i<(n); i++) #define all(x) x.begin(), x.end() #define pb push_back #define INF 1145141919 #define _1 first #define _2 second inline void chmin(long long &x, long long v) { if (x > v) x = v; } long long dp[100010][101]; int L[100010]; int minL[2000][2000]; long long take_photos(int N, int M, int K, std::vector<int> R, std::vector<int> C) { vector<P> ps; rep(i, N) { int l = R[i], r = C[i]; if (l > r) swap(l, r); ps.pb(P(l, -r)); } sort(all(ps)); int mr = -1; vector<P> nps; for (P p : ps) { if (-p._2 > mr) { nps.pb(P(p._1, -p._2)); mr = -p._2; } } swap(ps, nps); M = mr+1; rep(i, M) L[i] = INF; for (P p : ps) { int l = p._1, r = p._2; //cout<<"["<<l<<","<<r<<"]\n"; L[r] = l; } //rep(i, M) cout<<L[i]<<",";cout<<"\n"; //for (int i=M-2; i>=0; i--) L[i] = min(L[i], L[i+1]); rep(l, M) { int m = INF; for (int r=l; r<M; r++) { m = min(m, L[r]); minL[l][r] = m; } } rep(i, M+1) rep(j, K+1) dp[i][j] = 1LL<<60; dp[0][0] = 0; rep(i, M) { rep(k, K) { rep(pos, i+1) if (dp[pos][k] != 1LL<<60) { int l = minL[pos][i]; int s = i-l+1, s2 = max(0, pos-l); //cout<<"s="<<s<<", s2="<<s2<<"\n"; chmin(dp[i+1][k+1], dp[pos][k] + 1LL*s*s - 1LL*s2*s2); } } } //cout<<"M="<<M<<"\n"; long long m = 1LL<<60; rep(k, K+1) chmin(m, dp[M][k]); return m; }
#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...