247422026-02-14 22:13:04algoproFagyasztópypy3Részben helyes 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)
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva39ms19692 KiB
subtask25/10
2Elfogadva39ms19672 KiB
3Részben helyes45ms19560 KiB
4Elfogadva39ms19888 KiB
5Részben helyes43ms19656 KiB
6Elfogadva39ms19756 KiB
7Részben helyes45ms19688 KiB
8Részben helyes43ms19688 KiB
9Részben helyes39ms19676 KiB
10Elfogadva45ms19764 KiB
11Részben helyes39ms19672 KiB
subtask310/20
12Elfogadva43ms19728 KiB
13Elfogadva39ms19656 KiB
14Elfogadva39ms19660 KiB
15Részben helyes43ms19660 KiB
16Részben helyes45ms19688 KiB
17Részben helyes43ms21216 KiB
18Részben helyes43ms21220 KiB
19Elfogadva45ms19936 KiB
20Elfogadva48ms21252 KiB
21Részben helyes50ms21456 KiB
22Részben helyes43ms21244 KiB
23Elfogadva64ms21692 KiB
24Részben helyes57ms21472 KiB
25Elfogadva54ms21576 KiB
26Elfogadva43ms21216 KiB
27Részben helyes65ms21724 KiB
28Elfogadva72ms21720 KiB
29Elfogadva45ms21232 KiB
30Részben helyes59ms21552 KiB
31Elfogadva59ms22008 KiB
subtask47.5/15
32Részben helyes39ms19876 KiB
33Részben helyes46ms19632 KiB
34Részben helyes39ms19600 KiB
35Részben helyes48ms21052 KiB
36Részben helyes50ms21404 KiB
37Részben helyes50ms21444 KiB
38Részben helyes48ms21076 KiB
39Részben helyes45ms19964 KiB
40Részben helyes45ms21180 KiB
41Részben helyes61ms21452 KiB
42Részben helyes57ms21356 KiB
43Elfogadva63ms22036 KiB
44Részben helyes46ms19744 KiB
45Elfogadva52ms21496 KiB
46Elfogadva68ms21980 KiB
subtask57.5/15
47Elfogadva48ms21028 KiB
48Részben helyes48ms21164 KiB
49Elfogadva45ms21220 KiB
50Elfogadva43ms21180 KiB
51Elfogadva52ms21216 KiB
52Részben helyes46ms19884 KiB
53Részben helyes43ms21188 KiB
54Részben helyes43ms21180 KiB
55Részben helyes39ms19900 KiB
56Részben helyes56ms21468 KiB
57Részben helyes41ms21212 KiB
58Részben helyes41ms21232 KiB
59Elfogadva57ms21528 KiB
60Elfogadva43ms21028 KiB
61Elfogadva37ms19912 KiB
subtask67.5/15
62Elfogadva46ms21192 KiB
63Részben helyes50ms21120 KiB
64Részben helyes56ms21716 KiB
65Részben helyes64ms21916 KiB
66Részben helyes68ms21632 KiB
67Elfogadva43ms21148 KiB
68Részben helyes54ms21540 KiB
69Elfogadva45ms21024 KiB
70Elfogadva48ms21212 KiB
71Részben helyes63ms21868 KiB
72Elfogadva59ms21584 KiB
73Elfogadva54ms21396 KiB
74Részben helyes52ms21468 KiB
75Részben helyes54ms21468 KiB
76Elfogadva43ms21116 KiB