日期:2025年3月19日
ZeroJudge 題目連結:f819. 圖書館 (Library)
解題想法
因為這題不確定要輸出的資料數量,在 C++ 用 vector 儲存資料會比較方便。
Python 程式碼
使用時間約為 27 ms,記憶體約為 3.8 MB,通過測試。
import sys
for line in sys.stdin:
n = int(line) # n 本書
books = [] # 逾期書的編號
fine = 0 # 罰款金額
for _ in range(n): # 讀取 n 行資料
b, d = map(int, input().split()) # 書的編號 b、天數 d
if d > 100: # 逾期
books.append(b) # b 加入 books
fine += (d-100)*5 # 超過 100 天每天罰 5 元
if not books: print(0) # 如果 books 沒有資料,印出 0
else: # 反之,印出 books 排序後的內容及 fine
print(*sorted(books)); print(fine)
C++ 程式碼
使用時間約為 3 ms,記憶體約為 384 kB,通過測試。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(0); cin.tie(0);
int n; // n 本書
while(cin >> n) {
vector<int> books; // 逾期書的編號
int fine = 0; // 罰款金額
for(int i=0; i<n; i++) { // 讀取 n 行資料
int b, d; cin >> b >> d; // 書的編號 b、天數 d
if (d > 100) { // 逾期
books.push_back(b); // b 加入 books
fine += (d-100)*5; // 超過 100 天每天罰 5 元
}
}
if (books.empty()) {
cout << "0\n"; // 如果 books 沒有資料,印出 0
} else { // 反之,印出 books 排序後的內容及 fine
sort(books.begin(), books.end());
for(int i=0; i<(int)books.size(); i++) {
cout << books[i] << " \n"[i == (int)books.size()-1];
}
cout << fine << "\n";
}
}
return 0;
}
沒有留言:
張貼留言