Submission #59403729


Source Code Expand

Copy
"""
<>
- `A` `O(N^2)` `TLE`
- `O(1)`
- `list` 使 `A` `MLE`
- `dict` 使 `key` `A` `value`
- `O(N)`
"""
#
N = int(input())
A = list(map(int, input().split()))
#
ans = []
# dict
dic = dict()
#
for i, a in enumerate(A):
#
if(a in dic):
#
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
"""
<方針>
- 毎回 `A` の配列を捜査してその数値が出たかどうかを確認すると, `O(N^2)` より `TLE` する.
- 今まででた値を `O(1)` で確認できる方法があれば良い.
  - `list` を使うと, `A` が大きすぎて `MLE` の方向で良くない.
- `dict` を使い, `key` を `A` の値とし, `value` を前回値が出た時の位置とすれば良い.
- すると,全体では `O(N)` となって間に合う.
"""
# 入力
N = int(input())
A = list(map(int, input().split()))

# 答え
ans = []
# 値が出たかどうかのdict
dic = dict()
# 位置と値を取得
for i, a in enumerate(A):
  # 値が既に発見されてる時
  if(a in dic):
    # 前回の位置を取得
    past = dic[a]
    # 位置を0-indexedを考慮して出力
    ans.append(past+1)
    # 位置を記録
    dic[a] = i
  # 値がまだ発見されてない時
  else:
    # 答えを-1とする.
    ans.append(-1)
    # 位置を記録
    dic[a] = i

# 出力
print(*ans)

Submission Info

Submission Time
Task C - Repeating
User mattsunkun
Language Python (PyPy 3.10-v7.3.12)
Score 300
Code Size 1056 Byte
Status AC
Exec Time 130 ms
Memory 140172 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 2
AC × 28
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt
All 00_sample_01.txt, 00_sample_02.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 02_handmade_01.txt, 02_handmade_02.txt, 02_handmade_03.txt, 02_handmade_04.txt, 02_handmade_05.txt, 02_handmade_06.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 55 ms 76332 KB
00_sample_02.txt AC 56 ms 76576 KB
01_random_01.txt AC 107 ms 127080 KB
01_random_02.txt AC 108 ms 126828 KB
01_random_03.txt AC 108 ms 126836 KB
01_random_04.txt AC 108 ms 126720 KB
01_random_05.txt AC 111 ms 126848 KB
01_random_06.txt AC 107 ms 127104 KB
01_random_07.txt AC 109 ms 128288 KB
01_random_08.txt AC 109 ms 126936 KB
01_random_09.txt AC 108 ms 126692 KB
01_random_10.txt AC 111 ms 128180 KB
01_random_11.txt AC 77 ms 96532 KB
01_random_12.txt AC 109 ms 126828 KB
01_random_13.txt AC 97 ms 119880 KB
01_random_14.txt AC 108 ms 126472 KB
01_random_15.txt AC 81 ms 101244 KB
01_random_16.txt AC 120 ms 118520 KB
01_random_17.txt AC 99 ms 115480 KB
01_random_18.txt AC 120 ms 118852 KB
01_random_19.txt AC 67 ms 82736 KB
01_random_20.txt AC 125 ms 118992 KB
02_handmade_01.txt AC 56 ms 76708 KB
02_handmade_02.txt AC 108 ms 126948 KB
02_handmade_03.txt AC 128 ms 140172 KB
02_handmade_04.txt AC 129 ms 140060 KB
02_handmade_05.txt AC 128 ms 140060 KB
02_handmade_06.txt AC 130 ms 139768 KB


2025-04-08 (Tue)
13:00:23 +00:00