#38054: 基礎解法


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

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

#include<iostream>//k467. 分班 (Class)
using namespace std;
int main(){//輸入第一列為一個整數 N (1 <= N <= 1000) 表示學生人數。
 int n;
 while(cin>>n){
 int Li[n],Mi[n];
 bool cl[n]/*0=>L,1=>M*/,flagL=0,flagM=0;
 //第二列有 N 個整數Li(1 <= Li <= 100,1 <= i <= N),表示所有學生的語文成績。
 for(int i=0;i<n;i++) cin>>Li[i];
 //第三列有 N 個整數Mi(1 <= Mi <= 100,1 <= i <= N),表示所有學生的數理成績。
 for(int i=0;i<n;i++) cin>>Mi[i];
 //判斷每個同學應到的班,並檢查每班是否都有人 
 for(int i=0;i<n;i++){
 if(Li[i]>Mi[i]){cl[i]=0; flagL=1;}
 else if(Li[i]<Mi[i]){cl[i]=1; flagM=1;}
 }
 //輸出第一列表示語文班學生的座號
 if(flagL==0) cout<<-1;
 else{
 for(int i=0;i<n;i++){
 if(cl[i]==0) cout<<i+1<<" ";
 }
 } 
 cout<<endl;
 //第二列表示數理班學生的座號
 if(flagM==0) cout<<-1;
 else{
 for(int i=0;i<n;i++){
 if(cl[i]==1) cout<<i+1<<" ";
 }
 }
 cout<<endl;
 }
return 0;
}
/*
問題敘述
文文學校希望能夠讓學生發揮各自的才能,因此打算將學生分為語文班和數理班。
為了區分學生的能力,學校準備了語文相關測驗和數理相關測驗。
如果學生的語文成績高於數理成績,則分配到語文班,反之則分配到數理班。
透過這樣分班方式,學校希望學生有更好的學習體驗和學習成果,可以更專注於
自己擅長的領域,並且在那些領域中得到更多的挑戰。
舉例來說,假設文文學校共有五位學生,座號由 1 開始,他們的語文成績
分別是 77、74、89、98 和 82,而數理成績則是 98、77、76、74 和 93。
按照學校的分班方式,語文成績高於數理成績的同學將分配到語文班,因此 3號和 4號
同學將被分配到語文班;反之,1 號、2 號和 5 號同學將被分配到數理班。
請你設計一個程式幫忙同學順利分班。


輸入格式
輸入第一列為一個整數 N (1 <= N <= 1000) 表示學生人數。第二列有 N 個整數
Li(1 <= Li <= 100,1 <= i <= N),表示所有學生的語文成績。第三列有 N 個整數 
Mi(1 <= Mi <= 100,1 <= i <= N),表示所有學生的數理成績。
測資保證每位學生的兩科成績一定不相同。


輸出格式
輸出第一列表示語文班學生的座號,第二列表示數理班學生的座號,座號
由小到大排序,且中間以一個空白隔開。若此班級沒有學生則輸出 -1。


輸入範例 1
3
80 70 99
91 90 93


輸出範例 1
3
1 2


輸入範例 2
5
77 74 89 98 82
98 77 76 74 93


輸出範例 2
3 4
1 2 5


輸入範例 3
6
71 61 61 96 60 62
72 85 93 99 74 76


輸出範例 3
-1
1 2 3 4 5 6
*/

 
ZeroJudge Forum