4
19
2015
0

[AHOI2015J]猜谜游戏

描述

 

滨湖幼儿园的老师带着N位小朋友在玩游戏。
他们玩的是猜谜游戏,在每一轮游戏中,每一位小朋友都需要给出一个在1到100之间的整数(包括1和100)。对于每一位小朋友来说,如果他给出来的数字是唯一的,或者说没有别的小朋友给出来相同的数字,则他就可以获得与所选数字相同的得分。否则得零分。
现在他们一共进行了三轮游戏。老师希望知道三轮游戏之后,每一位小朋友分别可以得到多少分数。
 
格式
输入格式

 

输入有1+N行。
其中第一行给出一个正整数N(2<=N<=200)表示参与游戏的小朋友有多少位。
之后N行中的第i行(1<=i<=N)给出三个大于等于1小于等于100的正整数,分别表示第i位小朋友三轮游戏中分别给出的数字是多少。
输出格式

 

输出有N行。
其中第i行(1<=i<=N)给出了第i个小朋友在经过了三轮游戏之后,可以合计得到的分数。
样例1
样例输入1[复制]

 

 
5
100 99 98
100 97 92
63 89 63
99 99 99
89 97 98
样例输出1[复制]

 

 
0
92
215
198
89
样例2
样例输入2[复制]

 

 
3
89 92 77
89 92 63
89 63 77
样例输出2[复制]

 

 
0
63
63
限制

 

对于40%的数据,满足N<=50。
对于100%的数据,满足N<=200。
提示

 

对于样例一来说,假设五位小朋友分别名为Anold,Borel,Cayler,David和Einstein,则每一个人三轮游戏之后的得分情况如下所示:
Anold  :  0+0+0 = 0
Borel  :  0+0+92 = 92
Cayler  :  63+89+63 = 215
David  :  99+0+99 = 198
Einstein  :  89+0+0 = 89
这题便是今年的送分题啦~\(≧▽≦)/~AHOI太仁慈了
用b[time][score]表示第time轮,第一个猜score的人的编号
如果b[time][score]>0,即有人猜了,那么把那个人的得分ans[people]减去score分,并把b[time][score]赋值-1。
为什么呢?见下(好傻的语气)
program unique;
var
	b:array[1..3,1..210]of longint;
	n,a,i,j:longint;
	ans:array[1..210]of longint;
begin
	readln(n);
	fillchar(ans,sizeof(ans),0);
	fillchar(b,sizeof(b),0);
	for i:=1 to n do
	begin
		for j:=1 to 3 do
		begin
			read(a);
			if b[j][a]=0 then
			begin
				inc(ans[i],a);
				b[j][a]:=i;
			end
			else if b[j][a]>0 then
			begin
				dec(ans[b[j][a]],a);
				b[j][a]:=-1;
			end;
		end;
	end;
	for i:=1 to n do writeln(ans[i]);
end.

 

Category: 日题 | Tags: AHOI2015 | Read Count: 461

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com