# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
610870 | 2022-07-28T16:51:40 Z | racsosabe | Poklon (COCI17_poklon) | C++14 | 5000 ms | 12056 KB |
#include<bits/stdc++.h> using namespace::std; const int N = 500000 + 5; const int bsize = 710; int n; int q; int a[N]; int id[N]; int ans[N]; int L[N], R[N]; void compress(){ set<int> S; for(int i = 1; i <= n; i++) S.emplace(a[i]); int len = 0; map<int, int> id; for(int x : S){ id[x] = len++; } for(int i = 1; i <= n; i++) a[i] = id[a[i]]; } void solve(){ vector<int> queries(q); iota(queries.begin(), queries.end(), 1); sort(queries.begin(), queries.end(), [&] (int i, int j){ if(id[i] == id[j]) return id[i] & 1 ? R[i] < R[j] : R[i] > R[j]; return id[i] < id[j]; }); map<int, int> cnt; int cur = 0; int l = 1, r = 1; for(int at : queries){ while(r <= R[at]){ cnt[a[r]]++; if(cnt[a[r]] == 2) cur++; else if(cnt[a[r]] == 3) cur--; r += 1; } while(L[at] < l){ l--; cnt[a[l]]++; if(cnt[a[l]] == 2) cur++; else if(cnt[a[l]] == 3) cur--; } while(l < L[at]){ cnt[a[l]]--; if(cnt[a[l]] == 1) cur--; else if(cnt[a[l]] == 2) cur++; l++; } while(R[at] + 1 < r){ r--; cnt[a[r]]--; if(cnt[a[r]] == 1) cur--; else if(cnt[a[r]] == 2) cur++; } ans[at] = cur; } } int main(){ scanf("%d %d", &n, &q); for(int i = 1; i <= n; i++) scanf("%d", a + i); //compress(); for(int i = 1; i <= q; i++){ scanf("%d %d", L + i, R + i); id[i] = L[i] / bsize; } solve(); for(int i = 1; i <= q; i++) printf("%d\n", ans[i]); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 340 KB | Output is correct |
2 | Correct | 3 ms | 340 KB | Output is correct |
3 | Correct | 14 ms | 340 KB | Output is correct |
4 | Correct | 62 ms | 440 KB | Output is correct |
5 | Correct | 1759 ms | 2668 KB | Output is correct |
6 | Correct | 2475 ms | 2668 KB | Output is correct |
7 | Execution timed out | 5099 ms | 4940 KB | Time limit exceeded |
8 | Execution timed out | 5079 ms | 7396 KB | Time limit exceeded |
9 | Execution timed out | 5090 ms | 9696 KB | Time limit exceeded |
10 | Execution timed out | 5095 ms | 12056 KB | Time limit exceeded |