#38633: 基礎解法


yp11151119@yphs.tp.edu.tw (911-36張鈞晏)

學校 : 臺北市私立延平高級中學
編號 : 197210
來源 : [203.72.178.1]
最後登入時間 :
2024-11-15 18:00:44
m581. 狼人殺 (Werewolves) -- TOI練習賽202311新手組第1題 | From: [203.72.178.1] | 發表日期 : 2023-12-11 17:42

#include<iostream>//m581.狼人殺 (Werewolves) 
using namespace std;
int main(){
int n;
cin>>n;
int /*player*/p[n+1]/*{-1,0,1,2,3,4=>活狼人,活平民,活神職,死狼人,死平民,死神職}*/;
int ans=1/*{0,1,2}=>{Werewolves,Townsfolk,Wrong}*/,die;
for(int i=1;i<=n;i++) cin>>p[i];
while(cin>>die, die!=0){p[die]+=3;}
for(int i=1;i<=n;i++){
if(p[i]>=5){ans=2; break;}
if(p[i]==-1) ans=0;
}
if(ans==0) cout<<"Werewolves"<<endl;
else if(ans==1) cout<<"Townsfolk"<<endl;
else if(ans==2) cout<<"Wrong"<<endl;
return 0;
}
/*
問題敘述
狼人殺是一款經典的熱門桌遊,通常為六到十八人進行遊戲,分為狼人、平民與神職三種身分。
簡單來說,遊戲會有數個回合,每回合都會有玩家被淘汰。
當遊戲結束時,只需判斷是否仍有狼人存活:當有狼人存活時,狼人獲勝;否則,即為好人獲勝。
你是遊戲的主持人,你要判定遊戲結束時勝利的是哪方。
 
輸入格式
第一列輸入一個正整數N表示該場遊戲有幾名玩家 (6<=N<=18)。
第二列輸入N個整數,依序表示每位玩家的身分,-1 為狼人陣營,0為平民,1為神職。兩個整數間以空白間隔。
接著有若干列輸入,每列皆包含一個正整數X(0<=X<=N),表示X號玩家被淘汰,輸入為 0 時結束遊戲。
 
輸出格式
如果狼人陣營勝利,輸出 Werewolves,如果好人(平民與神職)陣營勝利,輸出 Townsfolk。
注意:如果過程發生已淘汰的玩家再次被淘汰,則輸出Wrong。
 
輸入範例 1
6
0 1 0 1 -1 -1
1
5
3
0
 
輸出範例 1
Werewolves
 
輸入範例 2
12
0 -1 -1 0 1 1 0 -1 0 -1 1 1
12
2
1
3
10
11
8
0
 
輸出範例 2
Townsfolk
 
輸入範例 3
6
0 1 0 1 -1 -1
1
5
1
0
 
輸出範例 3
Wrong
*/
 
ZeroJudge Forum