249062026-02-16 17:45:30algoproFagyasztópypy3Accepted 75/7589ms22348 KiB
# 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()
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted39ms19688 KiB
subtask210/10
2Accepted39ms19796 KiB
3Accepted39ms19684 KiB
4Accepted45ms19860 KiB
5Accepted43ms19760 KiB
6Accepted48ms19656 KiB
7Accepted39ms19880 KiB
8Accepted46ms19632 KiB
9Accepted39ms19760 KiB
10Accepted39ms19672 KiB
11Accepted39ms19688 KiB
subtask320/20
12Accepted39ms19692 KiB
13Accepted46ms19676 KiB
14Accepted43ms19876 KiB
15Accepted39ms19888 KiB
16Accepted39ms19692 KiB
17Accepted50ms21048 KiB
18Accepted45ms21220 KiB
19Accepted48ms21040 KiB
20Accepted45ms21228 KiB
21Accepted56ms21536 KiB
22Accepted48ms21188 KiB
23Accepted71ms21996 KiB
24Accepted67ms21992 KiB
25Accepted68ms22092 KiB
26Accepted43ms21168 KiB
27Accepted76ms21924 KiB
28Accepted76ms22100 KiB
29Accepted52ms21248 KiB
30Accepted63ms21992 KiB
31Accepted75ms22012 KiB
subtask415/15
32Accepted43ms19856 KiB
33Accepted43ms20040 KiB
34Accepted39ms19656 KiB
35Accepted45ms21168 KiB
36Accepted54ms21448 KiB
37Accepted61ms21504 KiB
38Accepted48ms21172 KiB
39Accepted43ms21036 KiB
40Accepted54ms21480 KiB
41Accepted61ms22032 KiB
42Accepted57ms21732 KiB
43Accepted63ms21840 KiB
44Accepted43ms21268 KiB
45Accepted54ms21416 KiB
46Accepted75ms22304 KiB
subtask515/15
47Accepted45ms21364 KiB
48Accepted52ms21216 KiB
49Accepted46ms21212 KiB
50Accepted48ms21136 KiB
51Accepted52ms21180 KiB
52Accepted50ms21180 KiB
53Accepted48ms21232 KiB
54Accepted46ms21212 KiB
55Accepted41ms19864 KiB
56Accepted59ms21548 KiB
57Accepted46ms21100 KiB
58Accepted48ms21160 KiB
59Accepted46ms21228 KiB
60Accepted41ms21228 KiB
61Accepted48ms21228 KiB
subtask615/15
62Accepted50ms21476 KiB
63Accepted52ms21420 KiB
64Accepted71ms21808 KiB
65Accepted89ms22348 KiB
66Accepted87ms22296 KiB
67Accepted45ms21048 KiB
68Accepted52ms21456 KiB
69Accepted54ms21228 KiB
70Accepted57ms21480 KiB
71Accepted74ms22088 KiB
72Accepted50ms21512 KiB
73Accepted74ms21992 KiB
74Accepted75ms21992 KiB
75Accepted50ms21468 KiB
76Accepted43ms21072 KiB