熱門文章

2025年5月30日 星期五

ZeroJudge 解題筆記:m582. 書房 (Study)

作者:王一哲
日期:2025年5月30日



ZeroJudge 題目連結:m582. 書房 (Study)

解題想法


用一個陣列儲存答案,索引值是碎片編號減 1,內容為所在書架編號。

Python 程式碼


使用時間約為 19 ms,記憶體約為 3.5 MB,通過測試。
import sys

for line in sys.stdin:
    n, m = map(int, line.split())  # n 個書架,m 張碎片
    ans = [0]*m  # 儲存答案用的串列,索引值是碎片編號減 1,內容為所在書架編號
    for i, a in enumerate(map(int, input().split()), start=1):  # 依序讀取各書架的碎片編號
        if a != 0: ans[a-1] = i  # 如果 a 不等於 0,設定 ans
    print(*ans)


C++ 程式碼


使用時間約為 2 ms,記憶體約為 92 kB,通過測試。
#include <cstdio>
using namespace std;

int main() {
    int n, m;  // n 個書架,m 張碎片
    while(scanf("%d %d", &n, &m) != EOF) {
        int ans[m];  // 儲存答案用的串列,索引值是碎片編號減 1,內容為所在書架編號
        for(int i=1; i<=n; i++) {  // 依序讀取各書架的碎片編號
            int a; scanf("%d", &a);
            if (a != 0) ans[a-1] = i;  // 如果 a 不等於 0,設定 ans
        }
        for(int i=0; i<m; i++) {
            printf("%d", ans[i]);
            if (i == m-1) printf("\n");
            else printf(" ");
        }
    }
    return 0;
}


沒有留言:

張貼留言