Submission #987642

#TimeUsernameProblemLanguageResultExecution timeMemory
987642tamthegodPoklon (COCI17_poklon)C++17
98 / 140
240 ms13516 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll maxn = 2e5 + 5, maxsz = 1e6 + 5, b = 500; ll n, q, a[maxn], res = 0; ll cnt[maxsz], ans[maxn]; struct Query { ll l, r, id; } qu[maxn]; void add(ll x) { res -= (cnt[x] == 2); cnt[x]++; res += (cnt[x] == 2); } void del(ll x) { res -= (cnt[x] == 2); cnt[x]--; res += (cnt[x] == 2); } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> q; for (ll i = 1; i <= n; i++) { cin >> a[i]; } for (ll i = 1; i <= q; i++) { cin >> qu[i].l >> qu[i].r; qu[i].id = i; } sort(qu + 1, qu + q + 1, [](Query p, Query q) { ll x = ((p.l - 1) / b + 1), y = (q.l - 1) / b + 1; return (x < y || (x == y && p.r < q.r)); }); ll l = 1, r = 0; for (ll i = 1; i <= q; i++) { while(l < qu[i].l) { del(a[l]); l++; } while(l > qu[i].l) { l--; add(a[l]); } while(r < qu[i].r) { r++; add(a[r]); } while(r > qu[i].r) { del(a[r]); r--; } ans[qu[i].id] = res; } for (ll i = 1; i <= q; i++) { cout << ans[i] << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...