249072026-02-16 17:45:55LazurAndrasFagyasztópypy3Elfogadva 75/7590ms22248 KiB
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()
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva45ms19692 KiB
subtask210/10
2Elfogadva39ms19828 KiB
3Elfogadva39ms19672 KiB
4Elfogadva45ms19712 KiB
5Elfogadva43ms19780 KiB
6Elfogadva46ms19684 KiB
7Elfogadva39ms19660 KiB
8Elfogadva39ms19804 KiB
9Elfogadva43ms19692 KiB
10Elfogadva39ms19744 KiB
11Elfogadva46ms19688 KiB
subtask320/20
12Elfogadva39ms19872 KiB
13Elfogadva39ms19708 KiB
14Elfogadva43ms19816 KiB
15Elfogadva43ms19664 KiB
16Elfogadva46ms19688 KiB
17Elfogadva46ms21064 KiB
18Elfogadva46ms21224 KiB
19Elfogadva48ms21080 KiB
20Elfogadva50ms21304 KiB
21Elfogadva56ms21736 KiB
22Elfogadva45ms21212 KiB
23Elfogadva71ms22060 KiB
24Elfogadva68ms21996 KiB
25Elfogadva59ms21892 KiB
26Elfogadva50ms21060 KiB
27Elfogadva76ms21984 KiB
28Elfogadva76ms22108 KiB
29Elfogadva45ms21228 KiB
30Elfogadva70ms21992 KiB
31Elfogadva76ms22048 KiB
subtask415/15
32Elfogadva46ms19764 KiB
33Elfogadva43ms19796 KiB
34Elfogadva39ms19704 KiB
35Elfogadva43ms21020 KiB
36Elfogadva54ms21572 KiB
37Elfogadva61ms21476 KiB
38Elfogadva50ms21172 KiB
39Elfogadva43ms21212 KiB
40Elfogadva48ms21476 KiB
41Elfogadva67ms21784 KiB
42Elfogadva56ms21848 KiB
43Elfogadva68ms21976 KiB
44Elfogadva43ms21228 KiB
45Elfogadva59ms21476 KiB
46Elfogadva68ms22248 KiB
subtask515/15
47Elfogadva45ms21396 KiB
48Elfogadva46ms21376 KiB
49Elfogadva50ms21220 KiB
50Elfogadva48ms21188 KiB
51Elfogadva52ms21044 KiB
52Elfogadva43ms21228 KiB
53Elfogadva48ms21264 KiB
54Elfogadva46ms21220 KiB
55Elfogadva39ms19948 KiB
56Elfogadva52ms21536 KiB
57Elfogadva48ms21112 KiB
58Elfogadva48ms21112 KiB
59Elfogadva54ms21136 KiB
60Elfogadva48ms21032 KiB
61Elfogadva41ms21224 KiB
subtask615/15
62Elfogadva50ms21436 KiB
63Elfogadva52ms21452 KiB
64Elfogadva71ms21704 KiB
65Elfogadva90ms22212 KiB
66Elfogadva79ms22092 KiB
67Elfogadva43ms21188 KiB
68Elfogadva59ms21480 KiB
69Elfogadva54ms21168 KiB
70Elfogadva48ms21480 KiB
71Elfogadva82ms22104 KiB
72Elfogadva56ms21476 KiB
73Elfogadva65ms22064 KiB
74Elfogadva67ms21924 KiB
75Elfogadva61ms21480 KiB
76Elfogadva43ms21152 KiB