Submission #986813

#TimeUsernameProblemLanguageResultExecution timeMemory
986813shikgom2Poklon (COCI17_poklon)Pypy 3
0 / 140
5033 ms133216 KiB
import sys input = sys.stdin.readline from math import sqrt mem = 100007 class Query: def __init__(self, l, r, k): self.l = l self.r = r self.k = k def __lt__(self, other): if self.l // sq == other.l // sq: return self.r > other.r return self.l // sq > other.l // sq def add(g): global res, b if b[g] == 1: # 이 수가 1번 등장했었다면 res += 1 elif b[g] == 2: # 이 수가 2번 등장했었다면 res -= 1 b[g] += 1 def sub(g): global res, b if b[g] == 2: # 이 수가 2번 등장했었다면 res += 1 elif b[g] == 3: # 이 수가 3번 등장했었다면 res -= 1 b[g] -= 1 n, m = map(int, input().split()) li = list(map(int, input().split())) sq = int(sqrt(n)) y = [] for _ in range(m): q1, q2 = map(int, input().split()) y.append(Query(q1 - 1, q2 - 1, len(y))) y.sort(reverse=True) b = [0] * (mem * 11) res = 0 s, e = 0, 0 add(li[0]) ans = [0] * m for q in y: ns, ne = q.l, q.r for i in range(s, ns): sub(li[i]) for i in range(s - 1, ns - 1, -1): add(li[i]) for i in range(e + 1, ne + 1): add(li[i]) for i in range(e, ne, -1): sub(li[i]) s, e = ns, ne ans[q.k] = res for a in ans: print(a) #print(*ans, sep='\n')
#Verdict Execution timeMemoryGrader output
Fetching results...