hdu acm-step 1.3.2 Tian Ji -- The Horse Racing

  本题的题意是:给出n匹马,每匹马都有一个固定的速度,结果有胜平负三种。

  代码如下:

  

#include <cstdio>
#include <algorithm>
using namespace std;
int tian[1000];
int king[1000];
int win,lose;
int n,i;
int lt,lk,rt,rk;
namespace IO
{
    char ch;
    const int M = 0xcf;
    const int N = 0x30;
    int scan()
    {
        bool f = true;    
        int sum=0;
        ch=getchar();
        while(ch!='\n'||f==true)
        {
            if(ch<='9'&&ch>='0'){sum=sum*10+(ch&M);f=false;}    
            else if((ch==' '||ch=='\n')&&!f)return sum;
            ch=getchar();
        }
        return sum;
    }
    void print(int a)
    {
        char s[20];
        int i=0;
        if(a<0){putchar('-');a=-a;}
        if(a==0)putchar('0');
        while(a){s[i]=a%10|N;a/=10;i++;};
        while(i--){putchar(s[i]);}
    }
}
int main()
{
    while(n=IO::scan())
    {
        for(i=0;i<n;i++)tian[i]=IO::scan();
        for(i=0;i<n;i++)king[i]=IO::scan();
        sort(tian,tian+n);
        sort(king,king+n);
                win=lose=0;
                rk=rt=n-1;
                lt=lk=0;
                while(lt<=rt)
                {
                        if(tian[rt] > king[rk])
                        {
                                win++;rt--;rk--;
                        }
                        else if(tian[lt] > king[lk])
                        {
                                win++;lt++;lk++;
                        }
                        else{
                                if(tian[lt] < king[rk])
                                {
                                        lose++;
                                }
                                lt++;rk--;
                        }
                }
        IO::print(200*(win-lose));
        putchar('\n');
    }
    return 0;
}

这道题错了很多次,后来发现原来结果有负的情况,改了之后就好了。

posted @ 2017-08-18 21:14  mtl6906  阅读(198)  评论(0编辑  收藏  举报