冰墩墩和冰壶 | ||
[ Submit Code ] [ Top 20 Runs ] [ Runs Status ] | ||
Acceteped : 407 | Submit : 1115 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB | |
Description | ||
冰墩墩和冰壶题目描述冰壶是被誉为“冰面上的国际象棋”,其计分规则是各自投壶,最后在大本营内,你有几个壶离圆心比对方所有壶离圆心都近就得到几分。 比如红方有两个壶,分别在坐标(1,1),(−2,1);黄方也有两个壶,分别在(1,0),(0,2)。 由于黄方的第一个壶离圆心更近,而黄方的第二个壶没有红方第一个壶近,所以最后黄方得1分,红方不得分。 现在冰墩墩每次都选择红方,它想知道它到底得了多少分? 输入格式第一行是一个整数T(1≤T≤3000),表示样例的个数。 每个样例的第一行是一个整数n(1≤n≤16),表示冰壶的数量。 以后每行一个冰壶的信息,为三个部分,第一个是一个字符,表示冰壶的颜色(R表示红色,Y表示黄色),后面是两个整数(数值的绝对值不超过1000),表示冰壶的坐标。 输入数据保证不会出现两个壶在同一个坐标。 输出格式依次输出每个样例的结果。结果为一行,分为两个部分,如果没有让对方得分,输出“Win”和分数,否则输出”Lose”和对方得分的分数,两者之间相隔一个空格。 样例输入2 4 Y 1 1 R -2 1 R 1 0 Y 0 2 4 Y 1 1 R 0 1 R 1 0 Y 0 2 样例输出Win 1 Win 2 |
#include<stdio.h>
int main()
{
int t;
scanf("%d",&t);
while(t--){
int n;
char ch;
int x,y;
int a;
int an[20];
int bn[20];
scanf("%d",&n);
int i,j;
int cnt1=0;
int cnt2=0;
int num=0;
while(n--){
scanf(" %c %d %d",&ch,&x,&y);
if(ch=='R'){
a=x*x+y*y;
an[cnt1++]=a;
}
if(ch=='Y'){
a=x*x+y*y;
bn[cnt2++]=a;
}
}
num=0;
int sign=0;
int min1=an[0];
int min2=bn[0];
for(i=1;i<cnt1;i++){
if(an[i]<min1){
min1=an[i];
}
}
for(i=1;i<cnt2;i++){
if(bn[i]<min2){
min2=bn[i];
}
}
if(min1<min2){
for(i=0;i<cnt1;i++){
if(an[i]<min2){
num++;
}
}
}
else if(min2<min1){
sign=1;
for(i=0;i<cnt2;i++){
if(bn[i]<min1){
num++;
}
}
}
if(sign==0) printf("Win %d\n",num);
else printf("Lose %d\n",num);
}
}