首页 > 代码库 > ouc shanghairegion#1A

ouc shanghairegion#1A

A - Game with Pearls
Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u
Submit Status

Description

Tom and Jerry are playing a game with tubes and pearls. The rule of the game is: 

1) Tom and Jerry come up together with a number K. 

2) Tom provides N tubes. Within each tube, there are several pearls. The number of pearls in each tube is at least 1 and at most N. 

3) Jerry puts some more pearls into each tube. The number of pearls put into each tube has to be either 0 or a positive multiple of K. After that Jerry organizes these tubes in the order that the first tube has exact one pearl, the 2nd tube has exact 2 pearls, …, the Nth tube has exact N pearls. 

4) If Jerry succeeds, he wins the game, otherwise Tom wins. 

Write a program to determine who wins the game according to a given N, K and initial number of pearls in each tube. If Tom wins the game, output “Tom”, otherwise, output “Jerry”.
 

Input

The first line contains an integer M (M<=500), then M games follow. For each game, the first line contains 2 integers, N and K (1 <= N <= 100, 1 <= K <= N), and the second line contains N integers presenting the number of pearls in each tube.
 

Output

For each game, output a line containing either “Tom” or “Jerry”.
 

Sample Input

2 5 1 1 2 3 4 5 6 2 1 2 3 4 5 5
 

Sample Output

Jerry Tom
 贪心= =,刚开始读错题意了冏。。。。。
先升序,然后判断 每一个与i的大小,如果等于i则跳过,如果小于i,那么加上k重新排序,如果大于i显然胜负揭晓。。。
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<queue>#include<vector>#include<algorithm>#include<string>using namespace std;int t,n,k,a[110];bool flag;bool cmp(int x,int y){      return x<y;}int main(){      scanf("%d",&t);      while(t--)      {            flag=true;            scanf("%d%d",&n,&k);            for(int i=1;i<=n;i++)               scanf("%d",&a[i]);            sort(a+1,a+1+n,cmp);            for(int i=1;i<=n;i++)            {                  if(a[i]==i)                        continue;                  else if(a[i]>i)                  {                        flag=false;                        break;                  }                  else                  {                        a[i]+=k;                        sort(a+1,a+1+n,cmp);                        i--;                  }            }            if(flag)                  printf("Jerry\n");            else                  printf("Tom\n");      }      return 0;}

  

ouc shanghairegion#1A