題目大意

輸入時間後加總排序。兩題差不多就放一起了。

題解

不正確的教學文件真的誤人一生,很多 C++ 基礎教學都沒有很認真地介紹 cin 的細節處理,遇到特殊格式,比如說本題的時間 hh:mm 就要繞一圈做。殊不知其實單純的 cin 就能正確處理了,不需要改寫成 C 語言的 scanf("%d:%d"),用 cin >> i >> ch >> j即可處理,非常直觀!

真應該認真寫一篇 C++ 輸入截斷規則的教學才對。

AC Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

int main()
{
ios::sync_with_stdio(false);
cin.tie(0);

int N, M;
while (cin >> N >> M) {
vector<pair<int,int>> data(M);
for (int j=0;j<M;++j)
data[j].second = j+1;

for (int i=0;i<N;++i)
for (int j=0;j<M;++j) {
int a, b;
char ch;
cin >> a >> ch >> b;
data[j].first += a*60+b;
}
sort(data.begin(), data.end());
for(auto [a,b]:data)
cout << b << ' ' << a << '\n';
}
}

OJ 連結

連結:https://zerojudge.tw/ShowProblem?problemid=b973