Piotr's Ants UVA - 10881 (我的天,晚安晚安~~)

Piotr's Ants UVA - 10881 (我的天,晚安晚安~~)

 

#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<map>
using namespace std;
const int maxn=10009;
struct st
{
    int id;
    int x;
    int i;
} a[maxn],b[maxn];

bool cmp(st a,st b)
{
    return a.x<b.x;
}

bool cmp1(st a,st b)
{
    return a.i<b.i;
}
int main()
{
    int t;
    int l=0;
    scanf("%d",&t);
    while(t--)
    {
        int L,n,T;
        scanf("%d%d%d",&L,&T,&n);
        map<int,int>s;
        for(int i=1; i<=n; i++)
        {
            string c;
            int x;
            cin>>x>>c;
            if(c=="R")
            {
                a[i].id=1;
                a[i].x=x;
            }
            else
            {
                a[i].id=0;
                a[i].x=x;
            }
            a[i].i=i;
            b[i]=a[i];
        }
        sort(a+1,a+n+1,cmp);
        for(int i=1; i<=n; i++)
        {
            if(b[i].id==1)
                b[i].x+=T;
            else
                b[i].x-=T;
        }
        sort(b+1,b+n+1,cmp);
        for(int i=1; i<=n; i++)
        {
            a[i].id=b[i].id;
            a[i].x=b[i].x;
            s[a[i].x]++;
        }
        sort(a+1,a+n+1,cmp1);
        printf("Case #%d:\n",++l);
        for(int i=1; i<=n; i++)
        {
            if(a[i].x<0||a[i].x>L)
                printf("Fell off\n");
            else if(s[a[i].x]>1)
            {
                printf("%d Turning\n",a[i].x);
            }
            else
            {
                if(a[i].id==1)
                    printf("%d R\n",a[i].x);
                else
                    printf("%d L\n",a[i].x);
            }
        }
        cout<<endl;
    }

    return 0;
}

Piotr's Ants UVA - 10881 (我的天,晚安晚安~~)