import java.util.Collections;
import java.util.Scanner;
import java.util.Vector;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
//小球数量
int n = s.nextInt();
//线段长度
int L = s.nextInt();
//t秒后小球的位置
int t = s.nextInt();
//小球初始位置
int[] ball = new int[n];
//各小球速度
int[] speed = new int[n];
//小球初始位置
for(int i=0;i<n;i++) {
ball[i]=s.nextInt();
speed[i]=1;
}
//开始计算t秒后小球的位置
for(int i=0;i<t;i++) {
//首先计算出小球当前时刻的位置
for(int j=0;j<n;j++) {
ball[j] = ball[j]+speed[j];
}
//然后判断小球的情况 给各自的速度赋值
//小球可能出现的情况有两种,分别是碰到墙壁或者与其它小球相撞
//首先判断是否与其它小球相撞
for(int j=0;j<n;j++) {
for(int k=j+1;k<n;k++) {
if(ball[j] == ball[k]) {
speed[j]*=(-1);
speed[k]*=(-1);
}
}
}
//再判断是否撞到墙壁
for(int j=0;j<n;j++) {
if(ball[j]==L) speed[j]*=-1;
else if(ball[j]==0) speed[j]*=-1;
}
}
//输出位置
for(int i=0;i<n;i++) {
System.out.print(ball[i]+" ");
}
}
}
CCF-CSP 201803-2碰撞的小球
最新推荐文章于 2022-08-30 10:19:16 发布