暑假期間,受到颱風及西南季風影響,大量的降雨使得高熊市淹水情況嚴重, 讓冬冬市長氣氣氣氣氣。於是,住在高雄的冬粉想整理統計一週內(週一至週日) 的降雨情形,一起分擔市長的煩惱。 請你根據題目給定的資料,輸出冬粉想知道的降雨資訊。每日統計降雨量的 時段分別為:上午 (morning)、下午 (afternoon)、晚間 (night)、清晨 (early morning) 四個時段,每日總降雨量為四個時段的加總。
範例測資
範例輸入 | 範例輸出 |
---|---|
輸入共有七行,每行依序表示週一至週日的降雨資訊。一行有 4 個浮點數: M、A、N、E(浮點數均為小數點後第一位,0 <= M、A、N、E <= 50),依序代表每天四個時段的降雨量(單位:毫米)。 | 對於每筆測資輸出一個正整數 D 和一個時段,以換行間隔。第一行的正整 數 D (1 <= D <= 7),代表一週內降雨量最多的日子 (1~7 分別代表週一至週日)。 第二行輸出一週內降雨量最多時段。測資不會有重複的最大每日降雨總量和最大時段降雨總量的情況。 |
2.3 18.4 0.3 0.0 1.5 10.8 22.4 11.1 0.5 15.8 25.0 16.4 0.0 4.6 0.0 0.4 9.7 5.9 3.2 1.7 1.8 2.1 0.0 7.2 0.7 10.2 2.2 5.8 | 3 afternoon |
10.7 2.6 7.8 20.0 2.7 3.5 40.1 35.4 0.0 13.2 20.6 12.1 19.2 2.4 3.8 4.0 15.5 14.3 16.9 5.5 4.5 5.7 7.8 0.0 13.2 3.4 5.1 9.6 | 2 night |
解題思路
判斷每日總和的最大值,並將最大值的天數存起來並輸出。
宣告一個 Map<string, float>,Key 分別為「morning、afternoon、night、early morning」,將不同時段的降雨量分別加到這些 Key 中。之後跑一個 for (auto it:Map),預設一個 pair<string, float> ans 並將 ans.second 設為 -1。如果 it.second > ans.second,則 ans = it。最後輸出 ans.first 即可。
範例程式碼-ZeroJudge E807: 降雨量統計 (Rainfall statistics)
#include <iostream>
#include <map>
using namespace std;
int main() {
cin.sync_with_stdio(0);
cin.tie(0);
float max = -1;
int max_day;
map<string, float>MAP;
for (int i = 1; i<=7; i++)
{
float a, b, c, d;
cin >> a >> b >> c >> d;
float sum = a + b + c + d;
if (sum > max)
{
max = sum;
max_day = i;
}
MAP["morning"] += a;
MAP["afternoon"] += b;
MAP["night"] += c;
MAP["early morning"] += d;
}
cout << max_day << "\n";
pair<string, float>ans;
ans.second = -1;
for (auto it:MAP)
{
if (it.second > ans.second) ans = it;
}
cout << ans.first << "\n";
}
//ZeroJudge E807
//Dr. SeanXD