結果
問題 | No.2774 Wake up Record 2 |
ユーザー |
|
提出日時 | 2024-06-07 22:50:39 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 145 ms / 2,000 ms |
コード長 | 1,875 bytes |
コンパイル時間 | 648 ms |
コンパイル使用メモリ | 81,792 KB |
実行使用メモリ | 103,936 KB |
最終ジャッジ日時 | 2024-12-26 09:18:27 |
合計ジャッジ時間 | 2,956 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 16 |
ソースコード
# ゆーさんは自分の健康増進のために「元気度」を記録してくれるロボット1と# 合計睡眠時間を記録してくれるロボット2を購入した# それぞれができる記録を時間1から時間Nまでさせた# 長さNの正整数列Aと、正整数Kが与えられる# これらはロボット1が時間iの時のゆーさんの元気度はA_iであったことを記録し、# ロボット2がゆーさんの合計睡眠時間がKであったことを記録していたことを表している# ゆーさんは元気度がある一定の値以下である時間では寝ていて、# そうでない時間では起きていたことがわかっている# 2以上N以下の整数kのうち、時間kでは起きていて時間k-1では寝ているものを全て昇順に出力せよ## 2 <= K <= N <= 100000# 1 <= A_i <= 10^9# 入力はすべて整数# j以下の元気度では寝ているものとしたとき、A_1 <= j# 矛盾した入力は与えられないimport sysimport itertoolsimport timefrom math import radians, sin, cos, tan, sqrtfrom collections import dequedef input():return sys.stdin.readline().replace('\n','')sys.setrecursionlimit(1000000)md1 = 998244353md2 = 10 ** 9 + 7N, K = map(int, input().split())A = list(map(int, input().split()))dct = {}for i in range(0, N):if A[i] not in dct:dct[A[i]] = []dct[A[i]].append(i)explist = []for i in range(0, N):explist.append(True)keylist = list(dct.keys())keylist.sort()sm = 0for i in range(0, len(keylist)):for j in range(0, len(dct[keylist[i]])):explist[dct[keylist[i]][j]] = Falsesm += len(dct[keylist[i]])if sm == K:breakans = []for i in range(1, N):if (not explist[i-1]) and explist[i]:ans.append(i+1)print(len(ans))print(' '.join(map(str, ans)))