제출 #392230

#제출 시각아이디문제언어결과실행 시간메모리
392230AugustinasJucasAliens (IOI16_aliens)C++14
16 / 100
74 ms2252 KiB
#include "aliens.h" #include <bits/stdc++.h> using namespace std; int reik[1001][1001] = {0}; void pad(int e, int s){ if(e > s) swap(e, s); for(int i = e; i <= s; i++){ for(int j = e; j <= s; j++){ reik[i][j] = 1; } } } long long take_photos(int n, int m, int k, vector<int> r, vector<int> c) { if(n == k){ for(int i = 0; i < n; i++){ pad(r[i], c[i]); } int ret = 0; for(int i = 0; i < m; i++){ for(int j = 0; j < m; j++){ ret += reik[i][j]; } } return ret; }else{ // r_i = c_i visada vector<int> vec; for(int i = 0; i < n; i++){ vec.push_back(r[i]); } sort(vec.begin(), vec.end()); // padalinu i k grupiu, kad galu skirtumu kvadratu suma butu kuo mazesne! long long dp[n+1][k+1]; long long inf = 1e18; for(int i = 0; i <= n; i++) for(int j = 0; j <= k; j++) dp[i][j] = inf; dp[0][1] = 0; for(int i = 0; i < n; i++) dp[i][1] = 1ll * (vec[i] - vec[0] + 1) * 1ll * (vec[i] - vec[0] + 1); long long ans = dp[n-1][1]; for(int i = 1; i < n; i++){ for(int j = 2; j <= k; j++){ // koks ats, jei sitas uzbagia pref[i] ir naudota is viso j grupiu for(int h = 0; h < i; h++){ dp[i][j] = min(dp[i][j], dp[h][j-1] + 1ll * (vec[i]-vec[h+1] + 1) * 1ll * (vec[i]-vec[h+1]+1)); } if(i == n-1) ans = min(ans, dp[i][j]); } } return ans; } }
#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...