熱門文章

2025年6月8日 星期日

ZeroJudge 解題筆記:n630. 電影院 (Cinema)

作者:王一哲
日期:2025年6月8日


ZeroJudge 題目連結:n630. 電影院 (Cinema)

解題想法


這題要注意輸出的格式,時、分都是兩位數,前面要補0。計算電影開場時刻的過程,將單位都換成分鐘會比較方便。

Python 程式碼


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

for line in sys.stdin:
    n = int(line)  # n 部電影
    movie = [tuple(map(int, input().split())) for _ in range(n)]  # 電影開場時刻
    h0, m0 = map(int, input().split())  # 現在的時刻
    t0 = h0*60 + m0 + 20  # 現在的時刻加 20 分鐘,並以分鐘為單位
    idx = -1  # 第 idx 部電影
    for i, (h, m) in enumerate(movie):  # 依序讀取電影開場時刻
        t = h*60 + m  # 電影開場時刻換成分鐘
        if t >= t0:
            idx = i; break  # 更新 idx
    if idx == -1: print("Too Late")
    else: print(f"{movie[idx][0]:02d} {movie[idx][1]:02d}")


C++ 程式碼


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

int main() {
    int n;  // n 部電影
    while(scanf("%d", &n) != EOF) {
        int movie[n][2];  // 電影開場時刻
        for(int i=0; i<n; i++) scanf("%d %d", &movie[i][0], &movie[i][1]);
        int h0, m0; scanf("%d %d", &h0, &m0);  // 現在的時刻
        int t0 = h0*60 + m0 + 20;  // 現在的時刻加 20 分鐘,並以分鐘為單位
        int idx = -1;  // 第 idx 部電影
        for(int i=0; i<n; i++) {  // 依序讀取電影開場時刻
            int t = movie[i][0]*60 + movie[i][1];  // 電影開場時刻換成分鐘
            if (t >= t0) {
                idx = i; break;  // 更新 idx
            }
        }
        if (idx == -1) printf("Too Late\n");
        else printf("%02d %02d", movie[idx][0], movie[idx][1]);
    }
    return 0;
}


沒有留言:

張貼留言