#37923: 基礎解法


yp11151119@yphs.tp.edu.tw (802-32張鈞晏)

學校 : 臺北市私立延平高級中學
編號 : 197210
來源 : [203.72.178.1]
最後登入時間 :
2024-05-08 17:38:58
k466. 成績分析 (Analysis) -- TOI練習賽202304新手組第1題 | From: [203.72.178.1] | 發表日期 : 2023-10-18 17:31

#include<iostream>//k466. 成績分析 (Analysis)
using namespace std;
int main(){
int n,m;
cin>>n>>m;
int p[n+1]={}/*progress(進步)*/,g[n+1]={}/*regress(退步)*/;
for(int i=1;i<=n;i++){
int score; cin>>score;//上次分 
for(int j=2;j<=m;j++){
int s; cin>>s;//下次分 
if(s>score) p[i]+=(s-score);
else if(score>s) g[i]+=(score-s);
score=s;
}
}
int best=1,worst=1;
for(int i=2;i<=n;i++){
if(p[i]>p[best]) best=i;
if(g[i]>g[worst]) worst=i;
}
cout<<best<<endl<<worst<<endl;
return 0;
}
/*
問題敘述
最近剛考完段考,為了要鼓勵班上同學,老師想要特別頒發禮物給歷次段考中進步最多的學生;
另外,老師也想找出退步最多的學生,多加關心學生的學習狀況。
老師會將學生歷次考試較前次考試進步的分數總和記為此學生的進步幅度,
而較前次考試退步的分數總和則記為學生的退步幅度。
舉例來說,若一個學生前五次的段考成績分別為 (80, 90, 60, 70, 65),
他的每筆分數與前次分數的進步分依序為 (10, 0, 10, 0),因此進步幅度為 20。
每筆分數與前次分數的退步分依序為 (0, 30, 0, 5),因此退步幅度為 35。
請你幫老師找出最佳進步以及最需關心的學生座號。
 
輸入格式
輸入第一列為兩個整數 N 和 M (3 <= N <= 1000,2 <= M <= 100) ,分別表示學生
人數以及考試次數。接下來有 N 列,每一列有 M 個數字 si (1 <= si <= 100,1 <= i <=
M),表示座號 i 的學生歷次考試成績。
 
輸出格式
輸出第一列表示最佳進步的學生座號,第二列表示最需關心的學生座號。
若有多個最佳進步或最需關心的學生則輸出座號最小者。
 
輸入範例 1
3 5
80 90 60 70 65
70 60 65 60 55
40 50 60 70 80
 
輸出範例 1
3
1
 
輸入範例 2
3 3
74 44 98
11 75 14
62 19 32
 
輸出範例 2
2
2
 
輸入範例 3
4 4
33 51 10 76
69 90 69 91
17 55 59 64
46 82 60 26
 
輸出範例 3
1
4
 
輸入範例 4
8 3
3 83 13
92 45 67
70 19 11
46 78 86
98 61 26
68 78 40
48 94 3
44 9 39
 
輸出範例 4
1
7
*/
 
ZeroJudge Forum