Submission #620767

#TimeUsernameProblemLanguageResultExecution timeMemory
620767dozerDiversity (CEOI21_diversity)C++14
4 / 100
2133 ms3412 KiB
#include <bits/stdc++.h> using namespace std; #define fastio() cin.tie(0), ios_base::sync_with_stdio(0) #define sp " " #define endl "\n" #define pb push_back #define pii pair<int, int> #define st first #define nd second #define N 300005 #define modulo 1000000007 #define int long long int arr[N], cnt[N]; int f(int sz, int n, int mask, int ind) { if (ind > sz) return 0; int ans = modulo; for (int i = 0; i < n; i++) { if (mask & (1<<i)) continue; int fin = ind + cnt[i + 1] - 1; int tmp = (sz * (sz + 1)) / 2 - (((ind - 1) * ind) / 2 + ((sz - fin) * (sz - fin + 1)) / 2); ans = min(ans, tmp + f(sz, n, mask | (1<<i), fin + 1)); } return ans; } int32_t main() { fastio(); int n, q; cin>>n>>q; for (int i = 1; i <= n; i++) cin>>arr[i]; while(q--) { memset(cnt, 0, sizeof(cnt)); int l, r; cin>>l>>r; map<int, int> val; int counter = 1; for (int i = l; i <= r; i++) { if (val[arr[i]] == 0) { val[arr[i]] = counter; counter++; } cnt[val[arr[i]]]++; } int res = f(r - l + 1, counter - 1, 0, 1); cout<<res<<endl; } }
#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...