結果
| 問題 |
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 sys
import itertools
import time
from math import radians, sin, cos, tan, sqrt
from collections import deque
def input():
return sys.stdin.readline().replace('\n','')
sys.setrecursionlimit(1000000)
md1 = 998244353
md2 = 10 ** 9 + 7
N, 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 = 0
for i in range(0, len(keylist)):
for j in range(0, len(dct[keylist[i]])):
explist[dct[keylist[i]][j]] = False
sm += len(dct[keylist[i]])
if sm == K:
break
ans = []
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)))