233402026-01-19 23:21:5542Fagyasztópython3Accepted 75/7520ms3540 KiB
from sys import stdin, setrecursionlimit
input=stdin.readline
setrecursionlimit(10**6)

def S():
 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(reverse=True)
 ot.sort(reverse=True)
 #print(negy,ot)
 def test(k):
  i=j=0
  for day in range(k,0,-1):
   if i<len(negy) and negy[i][0]>=day:
    if j <len(ot) and ot[j][0]>=day:
     i+=1
     j+=1
    else:return False
   else:
    j+=1
    if j <len(ot) and ot[j][0] >= day:j+=1
    else:return False
  return True
 lo=0
 hi=2000
 while hi-lo>1:
  mid=(hi+lo)//2
  if test(mid):lo=mid
  else:hi=mid
 print(lo)
 res=[]
 i=j=0
 for day in range(lo,0,-1):
  if i<len(negy) and negy[i][0]>=day:
   if j<len(ot) and ot[j][0]>=day:
    res.append((negy[i][1],ot[j][1]))
    i+=1
    j+=1
  else:
   j+=1
   if j <len(ot) and ot[j][0] >= day:
    res.append((ot[j-1][1],ot[j][1]))
    j+=1
 for line in res[::-1]:
  print(*line)

S()
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted16ms3124 KiB
subtask210/10
2Accepted17ms3124 KiB
3Accepted17ms3180 KiB
4Accepted17ms3028 KiB
5Accepted17ms3124 KiB
6Accepted17ms3124 KiB
7Accepted17ms3272 KiB
8Accepted17ms3232 KiB
9Accepted16ms3304 KiB
10Accepted16ms3276 KiB
11Accepted17ms3096 KiB
subtask320/20
12Accepted16ms3124 KiB
13Accepted16ms3256 KiB
14Accepted17ms3124 KiB
15Accepted16ms3260 KiB
16Accepted16ms3236 KiB
17Accepted17ms3252 KiB
18Accepted17ms3216 KiB
19Accepted17ms3240 KiB
20Accepted17ms3124 KiB
21Accepted18ms3140 KiB
22Accepted17ms3124 KiB
23Accepted19ms3368 KiB
24Accepted18ms3444 KiB
25Accepted17ms3352 KiB
26Accepted16ms3292 KiB
27Accepted19ms3436 KiB
28Accepted20ms3428 KiB
29Accepted18ms3216 KiB
30Accepted18ms3424 KiB
31Accepted19ms3384 KiB
subtask415/15
32Accepted16ms3144 KiB
33Accepted16ms3120 KiB
34Accepted16ms3400 KiB
35Accepted17ms3056 KiB
36Accepted18ms3140 KiB
37Accepted18ms3140 KiB
38Accepted17ms3120 KiB
39Accepted17ms3112 KiB
40Accepted17ms3140 KiB
41Accepted17ms3372 KiB
42Accepted18ms3128 KiB
43Accepted18ms3492 KiB
44Accepted17ms3060 KiB
45Accepted18ms3272 KiB
46Accepted19ms3408 KiB
subtask515/15
47Accepted17ms3076 KiB
48Accepted17ms3116 KiB
49Accepted17ms3136 KiB
50Accepted16ms3204 KiB
51Accepted17ms3272 KiB
52Accepted17ms3124 KiB
53Accepted17ms3052 KiB
54Accepted17ms3228 KiB
55Accepted17ms3124 KiB
56Accepted18ms3208 KiB
57Accepted17ms3124 KiB
58Accepted17ms3160 KiB
59Accepted18ms3124 KiB
60Accepted17ms3240 KiB
61Accepted17ms3300 KiB
subtask615/15
62Accepted17ms3292 KiB
63Accepted18ms3124 KiB
64Accepted19ms3384 KiB
65Accepted19ms3380 KiB
66Accepted20ms3540 KiB
67Accepted17ms3204 KiB
68Accepted17ms3268 KiB
69Accepted17ms3312 KiB
70Accepted18ms3312 KiB
71Accepted18ms3308 KiB
72Accepted17ms3328 KiB
73Accepted18ms3320 KiB
74Accepted19ms3244 KiB
75Accepted17ms3124 KiB
76Accepted18ms3424 KiB