需要注意的是,第一次输入的是排名,第二次输入的查询。
#include <iostream>
#include <set>
#include <map>
using namespace std;
map<int, int> dict;
set<int> s;
bool isPrime(int x)
{
if(x < 2)
return false;
for(int i = 2; i <= x/2; i++)
if(x % i == 0)
return false;
return true;
}
int main()
{
int n;
cin >> n;
dict.clear();
s.clear();
int k;
for(int i = 0; i < n; i++)
{
cin >> k;
dict[k] = i+1;
}
cin >> n;
for(int i = 0; i < n; i++)
{
cin >> k;
if(dict.find(k) != dict.end())
{
if(dict[k] == 1)
{
if(s.find(k) == s.end())
{
printf("%04d: Mystery Award\n", k);
s.insert(k);
}
else
printf("%04d: Checked\n", k);
}
else if(isPrime(dict[k]))
{
if(s.find(k) == s.end())
{
printf("%04d: Minion\n", k);
s.insert(k);
}
else
printf("%04d: Checked\n", k);
}
else
if(s.find(k) == s.end())
{
printf("%04d: Chocolate\n", k);
s.insert(k);
}
else
printf("%04d: Checked\n", k);
}
else
printf("%04d: Are you kidding?\n", k);
}
return 0;
}