from sys import stdin
input=stdin.readline
from bisect import bisect_left as lower_bound
from bisect import bisect_right as upper_bound
class FenwickTree:
def __init__(self, x):
bit = self.bit = list(x)
size = self.size = len(bit)
for i in range(size):
j = i | (i + 1)
if j < size:
bit[j] += bit[i]
def update(self, idx, x):
"""updates bit[idx] += x"""
while idx < self.size:
self.bit[idx] += x
idx |= idx + 1
def __call__(self, end):
"""calc sum(bit[:end])"""
x = 0
while end:
x += self.bit[end - 1]
end &= end - 1
return x
def find_kth(self, k):
"""Find largest idx such that sum(bit[:idx]) <= k"""
idx = -1
for d in reversed(range(self.size.bit_length())):
right_idx = idx + (1 << d)
if right_idx < self.size and self.bit[right_idx] <= k:
idx = right_idx
k -= self.bit[idx]
return idx + 1, k
class SortedList:
block_size = 700
def __init__(self, iterable=()):
self.macro = []
self.micros = [[]]
self.micro_size = [0]
self.fenwick = FenwickTree([0])
self.size = 0
for item in iterable:
self.insert(item)
def insert(self, x):
i = lower_bound(self.macro, x)
j = upper_bound(self.micros[i], x)
self.micros[i].insert(j, x)
self.size += 1
self.micro_size[i] += 1
self.fenwick.update(i, 1)
if len(self.micros[i]) >= self.block_size:
self.micros[i:i + 1] = self.micros[i][:self.block_size >> 1], self.micros[i][self.block_size >> 1:]
self.micro_size[i:i + 1] = self.block_size >> 1, self.block_size >> 1
self.fenwick = FenwickTree(self.micro_size)
self.macro.insert(i, self.micros[i + 1][0])
def pop(self, k=-1):
i, j = self._find_kth(k)
self.size -= 1
self.micro_size[i] -= 1
self.fenwick.update(i, -1)
return self.micros[i].pop(j)
def __getitem__(self, k):
i, j = self._find_kth(k)
return self.micros[i][j]
def count(self, x):
return self.upper_bound(x) - self.lower_bound(x)
def __contains__(self, x):
return self.count(x) > 0
def lower_bound(self, x):
i = lower_bound(self.macro, x)
return self.fenwick(i) + lower_bound(self.micros[i], x)
def upper_bound(self, x):
i = upper_bound(self.macro, x)
return self.fenwick(i) + upper_bound(self.micros[i], x)
def _find_kth(self, k):
return self.fenwick.find_kth(k + self.size if k < 0 else k)
def __len__(self):
return self.size
def __iter__(self):
return (x for micro in self.micros for x in micro)
def __repr__(self):
return str(list(self))
def main():
# n^4/3*log(n)
N = int(input())
L = SortedList()
A,B = [int(x) for x in input().split()]
L.insert((A,-B))
print(1)
for _ in range(N-1):
A,B = [int(x) for x in input().split()]
i = upper_bound(L,(A,-B))
if i==len(L):
if B<=-L[-1][1]:
L.insert((A,-B))
else:
L.insert((A,-B))
while len(L)>1 and B>-L[-2][1] and A>L[-2][0]:
#print(L,A,-B)
L.pop(-2)
#print(L)
else:
if B<-L[i][1] and A<L[i][0]:
pass
else:
L.insert((A,-B))
while i>0 and B>-L[i-1][1] and A>L[i-1][0]:
#print(L,A,-B)
L.pop(i-1)
i-=1
#print(L)
print(len(L))
main()
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
subtask1 | 0/0 | ||||||
1 | Elfogadva | 19ms | 12640 KiB | ||||
2 | Időlimit túllépés | 460ms | 4792 KiB | ||||
subtask2 | 5/5 | ||||||
3 | Elfogadva | 19ms | 13136 KiB | ||||
4 | Elfogadva | 19ms | 13204 KiB | ||||
5 | Elfogadva | 25ms | 13912 KiB | ||||
6 | Elfogadva | 76ms | 13976 KiB | ||||
subtask3 | 10/10 | ||||||
7 | Elfogadva | 18ms | 13628 KiB | ||||
8 | Elfogadva | 19ms | 13488 KiB | ||||
9 | Elfogadva | 21ms | 13412 KiB | ||||
10 | Elfogadva | 21ms | 13528 KiB | ||||
11 | Elfogadva | 25ms | 13564 KiB | ||||
12 | Elfogadva | 28ms | 13776 KiB | ||||
13 | Elfogadva | 46ms | 14192 KiB | ||||
14 | Elfogadva | 64ms | 14668 KiB | ||||
subtask4 | 0/10 | ||||||
15 | Elfogadva | 18ms | 14060 KiB | ||||
16 | Elfogadva | 19ms | 14424 KiB | ||||
17 | Elfogadva | 32ms | 14488 KiB | ||||
18 | Elfogadva | 37ms | 14940 KiB | ||||
19 | Elfogadva | 109ms | 15088 KiB | ||||
20 | Elfogadva | 202ms | 15552 KiB | ||||
21 | Elfogadva | 193ms | 15632 KiB | ||||
22 | Időlimit túllépés | 469ms | 8056 KiB | ||||
subtask5 | 0/25 | ||||||
23 | Elfogadva | 24ms | 14884 KiB | ||||
24 | Elfogadva | 28ms | 15208 KiB | ||||
25 | Elfogadva | 46ms | 15664 KiB | ||||
26 | Elfogadva | 64ms | 15540 KiB | ||||
27 | Időlimit túllépés | 453ms | 16004 KiB | ||||
28 | Időlimit túllépés | 456ms | 7232 KiB | ||||
29 | Időlimit túllépés | 467ms | 7296 KiB | ||||
30 | Időlimit túllépés | 463ms | 7012 KiB | ||||
subtask6 | 0/50 | ||||||
31 | Elfogadva | 18ms | 15132 KiB | ||||
32 | Időlimit túllépés | 500ms | 7104 KiB | ||||
33 | Elfogadva | 19ms | 13136 KiB | ||||
34 | Elfogadva | 19ms | 13204 KiB | ||||
35 | Elfogadva | 25ms | 13912 KiB | ||||
36 | Elfogadva | 76ms | 13976 KiB | ||||
37 | Elfogadva | 18ms | 13628 KiB | ||||
38 | Elfogadva | 19ms | 13488 KiB | ||||
39 | Elfogadva | 21ms | 13412 KiB | ||||
40 | Elfogadva | 21ms | 13528 KiB | ||||
41 | Elfogadva | 25ms | 13564 KiB | ||||
42 | Elfogadva | 28ms | 13776 KiB | ||||
43 | Elfogadva | 46ms | 14192 KiB | ||||
44 | Elfogadva | 64ms | 14668 KiB | ||||
45 | Elfogadva | 18ms | 14060 KiB | ||||
46 | Elfogadva | 19ms | 14424 KiB | ||||
47 | Elfogadva | 32ms | 14488 KiB | ||||
48 | Elfogadva | 37ms | 14940 KiB | ||||
49 | Elfogadva | 109ms | 15088 KiB | ||||
50 | Elfogadva | 202ms | 15552 KiB | ||||
51 | Elfogadva | 193ms | 15632 KiB | ||||
52 | Időlimit túllépés | 469ms | 8056 KiB | ||||
53 | Elfogadva | 24ms | 14884 KiB | ||||
54 | Elfogadva | 28ms | 15208 KiB | ||||
55 | Elfogadva | 46ms | 15664 KiB | ||||
56 | Elfogadva | 64ms | 15540 KiB | ||||
57 | Időlimit túllépés | 453ms | 16004 KiB | ||||
58 | Időlimit túllépés | 456ms | 7232 KiB | ||||
59 | Időlimit túllépés | 467ms | 7296 KiB | ||||
60 | Időlimit túllépés | 463ms | 7012 KiB | ||||
61 | Elfogadva | 67ms | 15684 KiB | ||||
62 | Elfogadva | 92ms | 15712 KiB | ||||
63 | Elfogadva | 65ms | 15672 KiB | ||||
64 | Időlimit túllépés | 462ms | 8560 KiB | ||||
65 | Elfogadva | 65ms | 15828 KiB | ||||
66 | Elfogadva | 61ms | 15592 KiB | ||||
67 | Elfogadva | 64ms | 15888 KiB | ||||
68 | Elfogadva | 64ms | 15924 KiB | ||||
69 | Időlimit túllépés | 462ms | 7296 KiB | ||||
70 | Időlimit túllépés | 460ms | 8752 KiB |