247462026-02-14 22:15:01algoproFagyasztópypy3Accepted 75/7575ms22392 KiB
# UUID: dcd20252-5fd0-458f-a027-9282c1011159
from sys import stdin, setrecursionlimit
input = stdin.readline
#setrecursionlimit(10**6)

N = int(input())
negy=[]
ot=[]
for i in range(1,N+1):
    S, M = map(int,input().split())
    if M==4: 
        negy.append((S,i))
    elif M>4:
        ot.append((S,i))

negy.sort()
ot.sort()

def test(k):
    ans = []
    i = len(negy)-1
    j = len(ot)-1
    for day in range(k,0,-1):
        if 0 <= i and negy[i][0] >= day:
            if 0 <= j and ot[j][0] >= day:
                ans.append((negy[i][1],ot[j][1]))
                i -= 1
                j -= 1
            else:
                return False, []
        elif 1 <= j and ot[j-1][0] >= day:
            ans.append((ot[j][1],ot[j-1][1]))
            j -= 2
        else:
            return False, []
    return True, ans

lo = 0
hi = 2001
res = []
while hi-lo > 1:
    mid = (hi+lo)//2
    ok, ans = test(mid)
    if ok:
        lo = mid
        res = ans
    else:
        hi = mid
print(lo)
res.reverse()
for line in res:
    print(*line)
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted45ms19696 KiB
subtask210/10
2Accepted45ms19600 KiB
3Accepted39ms19704 KiB
4Accepted39ms19704 KiB
5Accepted43ms19652 KiB
6Accepted45ms19584 KiB
7Accepted45ms19676 KiB
8Accepted39ms19684 KiB
9Accepted39ms19612 KiB
10Accepted43ms19628 KiB
11Accepted39ms19856 KiB
subtask320/20
12Accepted39ms19692 KiB
13Accepted46ms19728 KiB
14Accepted39ms19588 KiB
15Accepted43ms19652 KiB
16Accepted43ms19520 KiB
17Accepted52ms21040 KiB
18Accepted46ms21132 KiB
19Accepted37ms19860 KiB
20Accepted43ms21076 KiB
21Accepted50ms21428 KiB
22Accepted48ms21236 KiB
23Accepted68ms21764 KiB
24Accepted57ms21736 KiB
25Accepted57ms21560 KiB
26Accepted48ms21228 KiB
27Accepted59ms21792 KiB
28Accepted64ms21848 KiB
29Accepted43ms21228 KiB
30Accepted61ms21480 KiB
31Accepted67ms21824 KiB
subtask415/15
32Accepted43ms19796 KiB
33Accepted39ms19680 KiB
34Accepted39ms19688 KiB
35Accepted48ms21108 KiB
36Accepted52ms21480 KiB
37Accepted57ms21492 KiB
38Accepted43ms21052 KiB
39Accepted45ms19948 KiB
40Accepted45ms21228 KiB
41Accepted63ms21588 KiB
42Accepted59ms21448 KiB
43Accepted61ms21992 KiB
44Accepted39ms19948 KiB
45Accepted59ms21524 KiB
46Accepted75ms22124 KiB
subtask515/15
47Accepted43ms21224 KiB
48Accepted45ms21216 KiB
49Accepted50ms21108 KiB
50Accepted48ms21184 KiB
51Accepted50ms21048 KiB
52Accepted43ms21220 KiB
53Accepted48ms21128 KiB
54Accepted46ms21248 KiB
55Accepted46ms19692 KiB
56Accepted52ms21444 KiB
57Accepted48ms21052 KiB
58Accepted43ms21068 KiB
59Accepted57ms21464 KiB
60Accepted52ms21104 KiB
61Accepted39ms19740 KiB
subtask615/15
62Accepted45ms21240 KiB
63Accepted52ms21168 KiB
64Accepted63ms21736 KiB
65Accepted65ms21944 KiB
66Accepted68ms22392 KiB
67Accepted52ms21216 KiB
68Accepted56ms21440 KiB
69Accepted46ms21056 KiB
70Accepted54ms21176 KiB
71Accepted70ms21912 KiB
72Accepted50ms21456 KiB
73Accepted54ms21480 KiB
74Accepted59ms21532 KiB
75Accepted52ms21420 KiB
76Accepted48ms21224 KiB