poj 2062 Card Game Cheater(排序+模拟)

来源:互联网 发布:域名可以用来干什么 编辑:程序博客网 时间:2024/06/06 02:28
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;struct data{    int x,y;} a[200],b[200];bool cmp(data n,data m){    if(n.x==m.x) return n.y<m.y;    else return n.x<m.x;}int getx(char x){    if('2'<=x&&x<='9') return x-'0';    else if(x=='T') return 10;    else if(x=='J') return 11;    else if(x=='Q') return 12;    else if(x=='K') return 13;    else if(x=='A') return 14;}int gety(char y){    if(y=='H') return 4;    if(y=='S') return 3;    if(y=='D') return 2;    if(y=='C') return 1;}int cp(int i,int j){    if(a[i].x>b[j].x) return 1;    else if(a[i].x==b[j].x)    {        if(a[i].y>b[j].y) return 1;        else return 0;    }    else return 0;}int main(){    int _,n,i,j,ans;    char s[10];    scanf("%d",&_);    while(_--)    {        scanf("%d",&n);        ans=0;        for(i=0; i<n; i++)        {            scanf("%s",s);            a[i].x=getx(s[0]);            a[i].y=gety(s[1]);        }        sort(a,a+n,cmp);        for(i=0; i<n; i++)        {            scanf("%s",s);            b[i].x=getx(s[0]);            b[i].y=gety(s[1]);        }        sort(b,b+n,cmp);        for(i=0,j=0;i<n;i++)        {            while(cp(i,j)==1)            {                j++;                if(j>=n) break;            }            if(j<n)                ans++;            else                break;            j++;        }        printf("%d\n",ans);    }    return 0;}
0 0