欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Attack Survival

程序员文章站 2022-05-14 15:57:52
...

Attack Survival

Problem Statement

 

Takahashi has decided to hold fastest-finger-fast quiz games. Kizahashi, who is in charge of making the scoreboard, is struggling to write the program that manages the players' scores in a game, which proceeds as follows.

A game is played by N players, numbered 1 to N. At the beginning of a game, each player has K points.

When a player correctly answers a question, each of the other N−1 players receives minus one (−1) point. There is no other factor that affects the players' scores.

At the end of a game, the players with 0 points or lower are eliminated, and the remaining players survive.

In the last game, the players gave a total of Q correct answers, the i-th of which was given by Player Ai. For Kizahashi, write a program that determines whether each of the N players survived this game.

Constraints

 

  • All values in input are integers.
  • 2≤N≤105
  • 1≤K≤109
  • 1≤Q≤105
  • 1≤AiN (1≤iQ)

Input

 

Input is given from Standard Input in the following format:

N K Q
A1
A2
.
.
.
AQ

Output

 

Print N lines. The i-th line should contain Yes if Player i survived the game, and No otherwise.

Sample Input 1

 

6 3 4
3
1
3
2

Sample Output 1

 

No
No
Yes
No
No
No

In the beginning, the players' scores are (3,3,3,3,3,3).

  • Player 3 correctly answers a question. The players' scores are now (2,2,3,2,2,2).
  • Player 1 correctly answers a question. The players' scores are now (2,1,2,1,1,1).
  • Player 3 correctly answers a question. The players' scores are now (1,0,2,0,0,0).
  • Player 2 correctly answers a question. The players' scores are now (0,0,1,−1,−1,−1).

Players 1,2,4,5 and 6, who have 0 points or lower, are eliminated, and Player 3 survives this game.

Sample Input 2

 

6 5 4
3
1
3
2

Sample Output 2

 

Yes
Yes
Yes
Yes
Yes
Yes

Sample Input 3

 

10 13 15
3
1
4
1
5
9
2
6
5
3
5
8
9
7
9

Sample Output 3

 

No
No
No
No
Yes
No
No
No
Yes
No

      题意:序号为1 - n 的n个人,每个人初始分数为k分,给出回答对的题目总数并且给出答对这些问题的人分别是哪位。规则只有一条:如果一个人答对问题,其他人减一分。最后若谁的分数不低于0,就可以幸存下来,就输出Yes,否则输出No。

     思路:计答对Q个问题的人的序号分别出现几次就可以,即把每个人答对问题个数存起来,然后用Q减去自己答对的,就是你没有答对的题个数,即要一起减去的分数,再用初始的K减去这个数即为最后的得分。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 3e5+10;
int main()
{
	long long n,k,q;
	cin >> n >> k >> q;
	long long a[maxn];
	for(int i = 1;i <= q;i ++){
		int x;
		cin >> x;
		a[x]++;
	}
/*	for(int i = 1;i <= q;i ++){
		cout << a[i];
	}cout << endl;*/
	for(int i = 1;i <= n;i ++){
		if( k-(q-a[i]) <= 0) cout << "No" << endl;
		else cout << "Yes" << endl;
	}
	return 0;
}