Submission #1291863

#TimeUsernameProblemLanguageResultExecution timeMemory
1291863NValchanovDiversity (CEOI21_diversity)C++20
0 / 100
1 ms572 KiB
#include <iostream> #include <vector> #include <cassert> #include <algorithm> using namespace std; typedef long long llong; const int MAXN = 3e5 + 10; int n, q; llong b[MAXN]; llong a[MAXN]; int m; vector < int > pos; void read() { cin >> n >> q; for(int i = 1; i <= n; i++) { cin >> b[i]; } } void solve() { sort(a + 1, a + 1 + m); pos.clear(); for(int i = 2; i <= m; i++) { if(a[i] != a[i - 1]) { pos.push_back(i - 1); } } pos.push_back(m); llong ptr = 0; llong ans = 0; for(int i = 1; i <= m; i++) { while(ptr < pos.size() && pos[ptr] < i) ptr++; llong cnt = 1; llong last = i - 1; for(int j = ptr; j < pos.size(); j++) { llong len = pos[j] - last; ans += 1LL * len * cnt; cnt++; last = pos[j]; } } cout << ans << endl; } void process_queries() { for(int i = 1; i <= q; i++) { int left, right; cin >> left >> right; m = right - left + 1; for(int i = 1; i <= m; i++) { a[i] = b[left + i - 1]; } solve(); } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); read(); process_queries(); 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...