Submission #365505

#TimeUsernameProblemLanguageResultExecution timeMemory
365505alradStudentsko (COCI14_studentsko)C++17
100 / 100
46 ms620 KiB
#include <bits/stdc++.h> using namespace std; using ld = long double; using ull = unsigned long long; /* #pragma GCC optimize("unroll-loops") #pragma GCC optimize("Ofast") #pragma GCC optimize("-O3") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") */ template <class T> inline T gcd(T a , T b) { return !a ? b : gcd(b % a , a); } template <class T> inline T lcm(T a , T b) {return (a * b) / gcd(a , b) ; } mt19937 rnd(time(0)); #define all(x) x.begin(), x.end() #define debug(x) { cerr << #x << " = " << x << endl; }ы void solve() { int n, k; cin >> n >> k; vector<pair<int, int>> a(n); for (int i = 0; i < n; i++) { int x; cin >> x; a[i] = {x, i}; } sort(all(a)), reverse(all(a)); vector<int> nums(n, -1); for (int i = 0; i < n; i++) { nums[a[i].second] = (i / k + 1); } int ans = 0; reverse(all(nums)); vector<int> dp(n, 0); for (int i = 0; i < n; i++) { int par = -1; for (int j = 0; j < i; j++) { if (nums[j] <= nums[i] && (par == -1 || dp[j] > dp[par])) { par = j; } } if (par != -1) { dp[i] += dp[par]; } dp[i] += 1; ans = max(ans, dp[i]); } cout << n - ans << '\n'; return; } signed main() { ios_base :: sync_with_stdio(0); cin.tie(0) , cout.tie(0); int t = 1; while (t-- > 0) { solve(); } return 0; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...