题目 1216:Bugs

题目描述

有两只Bugs在坐标轴上,他们每个单位时间只能爬行一个单位长度,他们的爬行均为匀速运动。当两只Bugs相向爬行碰撞时,他们会各自掉头继续爬行,可以认为碰撞是瞬间发生。现在告诉你N只Bugs的爬行起点和方向,请问T时间后,向左和向右爬行的Bugs各有多少只?

输入格式

多组测试数据,每组数据先输入两个正整数 N (1<=N<=100) 和 T (1<=T<=1018),分别为代表Bugs数量以及爬行时间,接下来输入N行,每行一个整数和一个字母。其中整数代表某只Bug的开始位置,字母代表开始时候爬行的方向。
开始位置在[-1000,1000]范围
爬行方向L和Rfe分别代表左和右
开始时候不会有任何两只Bugs在同一位置。

输出格式

对于每组数据,输出两个整数,分别T代表时间后向左和向右的Bugs数量。以空格分隔。每组输出占一行。

输入样例

2 2
-1 R
1 L

输出样例

1 1

#include<stdio.h>
struct jgt     //结构体便于使数据便于统计处理
{
    int bug; //虫子
    char wz; //初始位置
}s[1000];

int main()
{
    int zs,sj;  //总数,时间
    int L=0,R=0;//终数据L的数量,终数据R的数量
    scanf("%d %d",&zs,&sj);
    for(int i=0;i<zs;i++)
    {
        scanf("%d %s",&s[i].bug,&s[i].wz);
    }
    for(int i=0;i<sj;i++)
    {
        if(s[i].wz=='L')
        {
            s[i].bug--;
        }
        else if(s[i].wz=='R')
        {
            s[i].bug++;
        }
        for(int j=1;j<zs;j++)//i位次与i+1位次相比较
        {
            if(s[i].bug==s[j].bug)//碰撞改变条件
            {
                if(s[i].wz=='L')
                {
                    s[i].wz='R';
                }
                else
                {
                    s[i].wz='L';
                }
                if(s[j].wz=='L')
                {
                    s[j].wz='R';
                }
                else
                {
                    s[j].wz='L';
                }
            }
        }
    }
    for(int i=0;i<zs;i++)//终数据统计
    {
        if(s[i].wz=='L')
        {
            L++;
        }
        else
        {
            R++;
        }
    }
    printf("%d %d",L,R);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

焚冉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值