247422026-02-14 22:13:04algoproFagyasztópypy3Partially correct 37.5/7572ms22036 KiB
# UUID: 2a431573-c3bc-401b-ba71-84e1c7578484
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)
ans.reverse()
for line in ans:
    print(*line)
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted39ms19692 KiB
subtask25/10
2Accepted39ms19672 KiB
3Partially correct45ms19560 KiB
4Accepted39ms19888 KiB
5Partially correct43ms19656 KiB
6Accepted39ms19756 KiB
7Partially correct45ms19688 KiB
8Partially correct43ms19688 KiB
9Partially correct39ms19676 KiB
10Accepted45ms19764 KiB
11Partially correct39ms19672 KiB
subtask310/20
12Accepted43ms19728 KiB
13Accepted39ms19656 KiB
14Accepted39ms19660 KiB
15Partially correct43ms19660 KiB
16Partially correct45ms19688 KiB
17Partially correct43ms21216 KiB
18Partially correct43ms21220 KiB
19Accepted45ms19936 KiB
20Accepted48ms21252 KiB
21Partially correct50ms21456 KiB
22Partially correct43ms21244 KiB
23Accepted64ms21692 KiB
24Partially correct57ms21472 KiB
25Accepted54ms21576 KiB
26Accepted43ms21216 KiB
27Partially correct65ms21724 KiB
28Accepted72ms21720 KiB
29Accepted45ms21232 KiB
30Partially correct59ms21552 KiB
31Accepted59ms22008 KiB
subtask47.5/15
32Partially correct39ms19876 KiB
33Partially correct46ms19632 KiB
34Partially correct39ms19600 KiB
35Partially correct48ms21052 KiB
36Partially correct50ms21404 KiB
37Partially correct50ms21444 KiB
38Partially correct48ms21076 KiB
39Partially correct45ms19964 KiB
40Partially correct45ms21180 KiB
41Partially correct61ms21452 KiB
42Partially correct57ms21356 KiB
43Accepted63ms22036 KiB
44Partially correct46ms19744 KiB
45Accepted52ms21496 KiB
46Accepted68ms21980 KiB
subtask57.5/15
47Accepted48ms21028 KiB
48Partially correct48ms21164 KiB
49Accepted45ms21220 KiB
50Accepted43ms21180 KiB
51Accepted52ms21216 KiB
52Partially correct46ms19884 KiB
53Partially correct43ms21188 KiB
54Partially correct43ms21180 KiB
55Partially correct39ms19900 KiB
56Partially correct56ms21468 KiB
57Partially correct41ms21212 KiB
58Partially correct41ms21232 KiB
59Accepted57ms21528 KiB
60Accepted43ms21028 KiB
61Accepted37ms19912 KiB
subtask67.5/15
62Accepted46ms21192 KiB
63Partially correct50ms21120 KiB
64Partially correct56ms21716 KiB
65Partially correct64ms21916 KiB
66Partially correct68ms21632 KiB
67Accepted43ms21148 KiB
68Partially correct54ms21540 KiB
69Accepted45ms21024 KiB
70Accepted48ms21212 KiB
71Partially correct63ms21868 KiB
72Accepted59ms21584 KiB
73Accepted54ms21396 KiB
74Partially correct52ms21468 KiB
75Partially correct54ms21468 KiB
76Accepted43ms21116 KiB