247432026-02-14 22:13:23algoproFagyasztópypy3Accepted 75/7578ms22264 KiB
# UUID: 3cedc2f6-92d3-4f1a-88cd-e25406ff8de6
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.copy()
    else:
        hi = mid
print(lo)
res.reverse()
for line in res:
    print(*line)
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted45ms19692 KiB
subtask210/10
2Accepted39ms19900 KiB
3Accepted39ms19720 KiB
4Accepted45ms19632 KiB
5Accepted45ms19592 KiB
6Accepted48ms19760 KiB
7Accepted46ms19784 KiB
8Accepted43ms19540 KiB
9Accepted39ms19688 KiB
10Accepted46ms19568 KiB
11Accepted46ms19744 KiB
subtask320/20
12Accepted41ms19736 KiB
13Accepted41ms19660 KiB
14Accepted43ms19616 KiB
15Accepted46ms19704 KiB
16Accepted39ms19664 KiB
17Accepted45ms21076 KiB
18Accepted52ms21252 KiB
19Accepted45ms19996 KiB
20Accepted46ms21200 KiB
21Accepted59ms21520 KiB
22Accepted48ms21212 KiB
23Accepted57ms21668 KiB
24Accepted65ms21724 KiB
25Accepted59ms21356 KiB
26Accepted43ms21260 KiB
27Accepted68ms21604 KiB
28Accepted64ms21720 KiB
29Accepted52ms21136 KiB
30Accepted64ms21652 KiB
31Accepted68ms21860 KiB
subtask415/15
32Accepted39ms19588 KiB
33Accepted39ms19768 KiB
34Accepted45ms19628 KiB
35Accepted48ms21236 KiB
36Accepted54ms21460 KiB
37Accepted59ms21592 KiB
38Accepted46ms21228 KiB
39Accepted41ms19816 KiB
40Accepted50ms21056 KiB
41Accepted63ms21572 KiB
42Accepted54ms21476 KiB
43Accepted61ms21852 KiB
44Accepted41ms19808 KiB
45Accepted59ms21368 KiB
46Accepted64ms21972 KiB
subtask515/15
47Accepted48ms21196 KiB
48Accepted52ms21024 KiB
49Accepted46ms21088 KiB
50Accepted43ms21220 KiB
51Accepted52ms21104 KiB
52Accepted50ms21096 KiB
53Accepted45ms21208 KiB
54Accepted52ms21136 KiB
55Accepted41ms19692 KiB
56Accepted61ms21392 KiB
57Accepted46ms21232 KiB
58Accepted48ms21184 KiB
59Accepted50ms21468 KiB
60Accepted50ms21156 KiB
61Accepted45ms19860 KiB
subtask615/15
62Accepted52ms21064 KiB
63Accepted57ms21164 KiB
64Accepted59ms21788 KiB
65Accepted65ms21960 KiB
66Accepted78ms22264 KiB
67Accepted48ms21212 KiB
68Accepted52ms21424 KiB
69Accepted45ms21136 KiB
70Accepted48ms21216 KiB
71Accepted61ms21936 KiB
72Accepted57ms21340 KiB
73Accepted56ms21468 KiB
74Accepted65ms21784 KiB
75Accepted52ms21428 KiB
76Accepted50ms21232 KiB