247412026-02-14 22:12:32algoproFagyasztópypy3Részben helyes 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)
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva39ms19692 KiB
subtask25/10
2Elfogadva39ms19652 KiB
3Részben helyes45ms19636 KiB
4Elfogadva45ms19544 KiB
5Részben helyes39ms19848 KiB
6Elfogadva39ms19680 KiB
7Részben helyes39ms19700 KiB
8Részben helyes43ms19716 KiB
9Részben helyes43ms19548 KiB
10Elfogadva39ms19600 KiB
11Részben helyes43ms19644 KiB
subtask310/20
12Elfogadva43ms19952 KiB
13Elfogadva39ms19668 KiB
14Elfogadva39ms19596 KiB
15Részben helyes43ms19664 KiB
16Részben helyes39ms19680 KiB
17Részben helyes43ms21212 KiB
18Részben helyes43ms21116 KiB
19Elfogadva45ms19936 KiB
20Elfogadva50ms21120 KiB
21Részben helyes48ms21412 KiB
22Részben helyes43ms21196 KiB
23Elfogadva64ms21652 KiB
24Részben helyes52ms21540 KiB
25Elfogadva52ms21584 KiB
26Elfogadva43ms21088 KiB
27Részben helyes61ms21708 KiB
28Elfogadva72ms21792 KiB
29Elfogadva45ms21160 KiB
30Részben helyes52ms21548 KiB
31Elfogadva67ms22016 KiB
subtask47.5/15
32Részben helyes39ms19676 KiB
33Részben helyes39ms19660 KiB
34Részben helyes43ms19756 KiB
35Részben helyes48ms21108 KiB
36Részben helyes50ms21448 KiB
37Részben helyes50ms21460 KiB
38Részben helyes48ms21216 KiB
39Részben helyes45ms19784 KiB
40Részben helyes50ms21100 KiB
41Részben helyes59ms21592 KiB
42Részben helyes52ms21456 KiB
43Elfogadva61ms21940 KiB
44Részben helyes39ms19692 KiB
45Elfogadva59ms21424 KiB
46Elfogadva71ms22016 KiB
subtask57.5/15
47Elfogadva48ms21104 KiB
48Részben helyes43ms21240 KiB
49Elfogadva45ms21212 KiB
50Elfogadva48ms21204 KiB
51Elfogadva54ms21232 KiB
52Részben helyes45ms19988 KiB
53Részben helyes43ms21024 KiB
54Részben helyes43ms21288 KiB
55Részben helyes41ms19700 KiB
56Részben helyes57ms21516 KiB
57Részben helyes48ms21108 KiB
58Részben helyes43ms21088 KiB
59Elfogadva50ms21468 KiB
60Elfogadva41ms21176 KiB
61Elfogadva43ms19936 KiB
subtask67.5/15
62Elfogadva46ms21168 KiB
63Részben helyes50ms21184 KiB
64Részben helyes56ms21840 KiB
65Részben helyes64ms21888 KiB
66Részben helyes67ms21844 KiB
67Elfogadva45ms21088 KiB
68Részben helyes56ms21492 KiB
69Elfogadva46ms21132 KiB
70Elfogadva46ms21216 KiB
71Részben helyes64ms21784 KiB
72Elfogadva56ms21556 KiB
73Elfogadva54ms21496 KiB
74Részben helyes52ms21468 KiB
75Részben helyes54ms21508 KiB
76Elfogadva43ms21120 KiB