247442026-02-14 22:13:45algoproFagyasztópypy3Accepted 75/7576ms22328 KiB
# UUID: 71b8761b-e1db-448f-9a74-45da67cdd91f
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
1Accepted43ms19688 KiB
subtask210/10
2Accepted39ms19888 KiB
3Accepted43ms19636 KiB
4Accepted43ms19636 KiB
5Accepted39ms19896 KiB
6Accepted45ms19736 KiB
7Accepted39ms19688 KiB
8Accepted43ms19620 KiB
9Accepted39ms19708 KiB
10Accepted45ms19692 KiB
11Accepted39ms19528 KiB
subtask320/20
12Accepted39ms19660 KiB
13Accepted45ms19620 KiB
14Accepted43ms19688 KiB
15Accepted43ms19576 KiB
16Accepted39ms19584 KiB
17Accepted43ms21216 KiB
18Accepted50ms21216 KiB
19Accepted43ms20012 KiB
20Accepted50ms21072 KiB
21Accepted57ms21536 KiB
22Accepted43ms21212 KiB
23Accepted57ms21712 KiB
24Accepted57ms21708 KiB
25Accepted59ms21460 KiB
26Accepted48ms21120 KiB
27Accepted59ms21740 KiB
28Accepted71ms21652 KiB
29Accepted52ms21228 KiB
30Accepted54ms21600 KiB
31Accepted59ms21780 KiB
subtask415/15
32Accepted43ms19568 KiB
33Accepted43ms19740 KiB
34Accepted39ms19564 KiB
35Accepted45ms21148 KiB
36Accepted59ms21468 KiB
37Accepted52ms21428 KiB
38Accepted48ms21196 KiB
39Accepted39ms19912 KiB
40Accepted45ms21212 KiB
41Accepted54ms21752 KiB
42Accepted59ms21420 KiB
43Accepted68ms21920 KiB
44Accepted46ms19936 KiB
45Accepted52ms21548 KiB
46Accepted64ms21952 KiB
subtask515/15
47Accepted48ms21116 KiB
48Accepted45ms21216 KiB
49Accepted50ms21112 KiB
50Accepted43ms21044 KiB
51Accepted46ms21216 KiB
52Accepted48ms21216 KiB
53Accepted48ms21216 KiB
54Accepted46ms21168 KiB
55Accepted45ms19684 KiB
56Accepted52ms21512 KiB
57Accepted43ms21108 KiB
58Accepted46ms21044 KiB
59Accepted50ms21484 KiB
60Accepted48ms21220 KiB
61Accepted45ms19936 KiB
subtask615/15
62Accepted45ms21416 KiB
63Accepted56ms21188 KiB
64Accepted57ms21720 KiB
65Accepted71ms21856 KiB
66Accepted76ms22328 KiB
67Accepted43ms21216 KiB
68Accepted50ms21416 KiB
69Accepted50ms21272 KiB
70Accepted54ms21220 KiB
71Accepted68ms21720 KiB
72Accepted50ms21476 KiB
73Accepted54ms21424 KiB
74Accepted63ms21644 KiB
75Accepted59ms21460 KiB
76Accepted43ms21216 KiB