题目描述
有两只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);
}