247412026-02-14 22:12:32algoproFagyasztópypy3Partially correct 37.5/7572ms22016 KiB
# UUID: 39b4fc82-58c8-4a42-b760-173aa8ce8f75
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)
ans.reverse()
for line in ans:
    print(*line)
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted39ms19692 KiB
subtask25/10
2Accepted39ms19652 KiB
3Partially correct45ms19636 KiB
4Accepted45ms19544 KiB
5Partially correct39ms19848 KiB
6Accepted39ms19680 KiB
7Partially correct39ms19700 KiB
8Partially correct43ms19716 KiB
9Partially correct43ms19548 KiB
10Accepted39ms19600 KiB
11Partially correct43ms19644 KiB
subtask310/20
12Accepted43ms19952 KiB
13Accepted39ms19668 KiB
14Accepted39ms19596 KiB
15Partially correct43ms19664 KiB
16Partially correct39ms19680 KiB
17Partially correct43ms21212 KiB
18Partially correct43ms21116 KiB
19Accepted45ms19936 KiB
20Accepted50ms21120 KiB
21Partially correct48ms21412 KiB
22Partially correct43ms21196 KiB
23Accepted64ms21652 KiB
24Partially correct52ms21540 KiB
25Accepted52ms21584 KiB
26Accepted43ms21088 KiB
27Partially correct61ms21708 KiB
28Accepted72ms21792 KiB
29Accepted45ms21160 KiB
30Partially correct52ms21548 KiB
31Accepted67ms22016 KiB
subtask47.5/15
32Partially correct39ms19676 KiB
33Partially correct39ms19660 KiB
34Partially correct43ms19756 KiB
35Partially correct48ms21108 KiB
36Partially correct50ms21448 KiB
37Partially correct50ms21460 KiB
38Partially correct48ms21216 KiB
39Partially correct45ms19784 KiB
40Partially correct50ms21100 KiB
41Partially correct59ms21592 KiB
42Partially correct52ms21456 KiB
43Accepted61ms21940 KiB
44Partially correct39ms19692 KiB
45Accepted59ms21424 KiB
46Accepted71ms22016 KiB
subtask57.5/15
47Accepted48ms21104 KiB
48Partially correct43ms21240 KiB
49Accepted45ms21212 KiB
50Accepted48ms21204 KiB
51Accepted54ms21232 KiB
52Partially correct45ms19988 KiB
53Partially correct43ms21024 KiB
54Partially correct43ms21288 KiB
55Partially correct41ms19700 KiB
56Partially correct57ms21516 KiB
57Partially correct48ms21108 KiB
58Partially correct43ms21088 KiB
59Accepted50ms21468 KiB
60Accepted41ms21176 KiB
61Accepted43ms19936 KiB
subtask67.5/15
62Accepted46ms21168 KiB
63Partially correct50ms21184 KiB
64Partially correct56ms21840 KiB
65Partially correct64ms21888 KiB
66Partially correct67ms21844 KiB
67Accepted45ms21088 KiB
68Partially correct56ms21492 KiB
69Accepted46ms21132 KiB
70Accepted46ms21216 KiB
71Partially correct64ms21784 KiB
72Accepted56ms21556 KiB
73Accepted54ms21496 KiB
74Partially correct52ms21468 KiB
75Partially correct54ms21508 KiB
76Accepted43ms21120 KiB