solution
给出比赛排名,查询指定id的奖品。
借助map记录排名,若存在,则输出相应奖品后值为非法排名-1以标记已查询
#include<iostream>
#include<map>
using namespace std;
bool isPrime(int n){
for(int i = 2; i * i <= n; i++){
if(n % i == 0) return false;
}
return true;
}
int main(){
int n, id, k;
map<int, int> mp;
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &id);
mp[id] = i;
}
scanf("%d", &k);
while(k--){
scanf("%d", &id);
printf("%04d: ", id);
if(!mp.count(id)) printf("Are you kidding?\n");
else if(mp[id] == -1) printf("Checked\n");
else{
if(mp[id] == 1) printf("Mystery Award\n");
else if(isPrime(mp[id])) printf("Minion\n");
else printf("Chocolate\n");
mp[id] = -1;
}
}
return 0;
}