# UUID: 5fc5f58a-096d-4d9f-9d35-cb739f2765e1
import sys
input = sys.stdin.readline
def solve():
n = int(input())
a = []
for i in range(n):
x, y = [int(x) for x in input().split()]
if y < 4: continue
if y == 4: a.append((x, False, i+1))
else: a.append((x, True, i+1))
n = len(a)
a.sort(reverse = True)
l, r = 0, n
while l < r-1:
mid = (l+r) // 2
cnt0, cnt1 = 0, 0
i = 0
t = 1
while i < n and a[i][0] >= mid:
if a[i][1]: cnt1 += 1
else: cnt0 += 1
i += 1
for j in range(mid, 0, -1):
while i < n and a[i][0] >= j:
if a[i][1]: cnt1 += 1
else: cnt0 += 1
i += 1
if cnt0:
cnt0 -= 1
if cnt1: cnt1 -= 1
else:
t = 0
break
else:
if cnt1 >= 2: cnt1 -= 2
else:
t = 0
break
if t: l = mid
else: r = mid
print(l)
ans0, ans1 = [], []
i0, i1 = 0, 0
i = 0
ans = []
while i < n and a[i][0] >= l:
if a[i][1]: ans1.append(a[i][2])
else: ans0.append(a[i][2])
i += 1
for j in range(l, 0, -1):
while i < n and a[i][0] >= j:
if a[i][1]: ans1.append(a[i][2])
else: ans0.append(a[i][2])
i += 1
if len(ans0) > i0:
ans.append((ans0[i0], ans1[i1]))
i0 += 1
i1 += 1
else:
ans.append((ans1[i1], ans1[i1+1]))
i1 += 2
ans.reverse()
for u in ans: print(*u)
solve()| Subtask | Sum | Test | Verdict | Time | Memory | ||
|---|---|---|---|---|---|---|---|
| subtask1 | 0/0 | ||||||
| 1 | Accepted | 39ms | 19688 KiB | ||||
| subtask2 | 10/10 | ||||||
| 2 | Accepted | 39ms | 19796 KiB | ||||
| 3 | Accepted | 39ms | 19684 KiB | ||||
| 4 | Accepted | 45ms | 19860 KiB | ||||
| 5 | Accepted | 43ms | 19760 KiB | ||||
| 6 | Accepted | 48ms | 19656 KiB | ||||
| 7 | Accepted | 39ms | 19880 KiB | ||||
| 8 | Accepted | 46ms | 19632 KiB | ||||
| 9 | Accepted | 39ms | 19760 KiB | ||||
| 10 | Accepted | 39ms | 19672 KiB | ||||
| 11 | Accepted | 39ms | 19688 KiB | ||||
| subtask3 | 20/20 | ||||||
| 12 | Accepted | 39ms | 19692 KiB | ||||
| 13 | Accepted | 46ms | 19676 KiB | ||||
| 14 | Accepted | 43ms | 19876 KiB | ||||
| 15 | Accepted | 39ms | 19888 KiB | ||||
| 16 | Accepted | 39ms | 19692 KiB | ||||
| 17 | Accepted | 50ms | 21048 KiB | ||||
| 18 | Accepted | 45ms | 21220 KiB | ||||
| 19 | Accepted | 48ms | 21040 KiB | ||||
| 20 | Accepted | 45ms | 21228 KiB | ||||
| 21 | Accepted | 56ms | 21536 KiB | ||||
| 22 | Accepted | 48ms | 21188 KiB | ||||
| 23 | Accepted | 71ms | 21996 KiB | ||||
| 24 | Accepted | 67ms | 21992 KiB | ||||
| 25 | Accepted | 68ms | 22092 KiB | ||||
| 26 | Accepted | 43ms | 21168 KiB | ||||
| 27 | Accepted | 76ms | 21924 KiB | ||||
| 28 | Accepted | 76ms | 22100 KiB | ||||
| 29 | Accepted | 52ms | 21248 KiB | ||||
| 30 | Accepted | 63ms | 21992 KiB | ||||
| 31 | Accepted | 75ms | 22012 KiB | ||||
| subtask4 | 15/15 | ||||||
| 32 | Accepted | 43ms | 19856 KiB | ||||
| 33 | Accepted | 43ms | 20040 KiB | ||||
| 34 | Accepted | 39ms | 19656 KiB | ||||
| 35 | Accepted | 45ms | 21168 KiB | ||||
| 36 | Accepted | 54ms | 21448 KiB | ||||
| 37 | Accepted | 61ms | 21504 KiB | ||||
| 38 | Accepted | 48ms | 21172 KiB | ||||
| 39 | Accepted | 43ms | 21036 KiB | ||||
| 40 | Accepted | 54ms | 21480 KiB | ||||
| 41 | Accepted | 61ms | 22032 KiB | ||||
| 42 | Accepted | 57ms | 21732 KiB | ||||
| 43 | Accepted | 63ms | 21840 KiB | ||||
| 44 | Accepted | 43ms | 21268 KiB | ||||
| 45 | Accepted | 54ms | 21416 KiB | ||||
| 46 | Accepted | 75ms | 22304 KiB | ||||
| subtask5 | 15/15 | ||||||
| 47 | Accepted | 45ms | 21364 KiB | ||||
| 48 | Accepted | 52ms | 21216 KiB | ||||
| 49 | Accepted | 46ms | 21212 KiB | ||||
| 50 | Accepted | 48ms | 21136 KiB | ||||
| 51 | Accepted | 52ms | 21180 KiB | ||||
| 52 | Accepted | 50ms | 21180 KiB | ||||
| 53 | Accepted | 48ms | 21232 KiB | ||||
| 54 | Accepted | 46ms | 21212 KiB | ||||
| 55 | Accepted | 41ms | 19864 KiB | ||||
| 56 | Accepted | 59ms | 21548 KiB | ||||
| 57 | Accepted | 46ms | 21100 KiB | ||||
| 58 | Accepted | 48ms | 21160 KiB | ||||
| 59 | Accepted | 46ms | 21228 KiB | ||||
| 60 | Accepted | 41ms | 21228 KiB | ||||
| 61 | Accepted | 48ms | 21228 KiB | ||||
| subtask6 | 15/15 | ||||||
| 62 | Accepted | 50ms | 21476 KiB | ||||
| 63 | Accepted | 52ms | 21420 KiB | ||||
| 64 | Accepted | 71ms | 21808 KiB | ||||
| 65 | Accepted | 89ms | 22348 KiB | ||||
| 66 | Accepted | 87ms | 22296 KiB | ||||
| 67 | Accepted | 45ms | 21048 KiB | ||||
| 68 | Accepted | 52ms | 21456 KiB | ||||
| 69 | Accepted | 54ms | 21228 KiB | ||||
| 70 | Accepted | 57ms | 21480 KiB | ||||
| 71 | Accepted | 74ms | 22088 KiB | ||||
| 72 | Accepted | 50ms | 21512 KiB | ||||
| 73 | Accepted | 74ms | 21992 KiB | ||||
| 74 | Accepted | 75ms | 21992 KiB | ||||
| 75 | Accepted | 50ms | 21468 KiB | ||||
| 76 | Accepted | 43ms | 21072 KiB | ||||