满分代码如下:
#include <iostream>
using namespace std;
const int N = 100;
int main()
{
int n,l,t;
cin >> n >> l >> t;
int s[N+1];//用数组表示球,代表每个球的位置。
int flag[N+1];
for(int i=0;i<n;i++)
flag[i] = 1;//flag数组表示小球移动的方向,初始为1;
for(int i=0;i<n;i++)
cin >> s[i];
for(int j=1;j<=t;j++){//进行t次遍历,每秒过后都判断位置
for(int i=0;i<n;i++){
if(s[i]==0 && flag[i]==-1 || s[i]==l && flag[i]==1)
flag[i] *= -1;
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(s[i] == s[j]){//两球碰撞
flag[i] *= -1;
flag[j] *= -1;
}
}
}
for(int i=0;i<n;i++)
s[i] += flag[i];
}
for(int i=0;i<n;i++)
cout << s[i] << ' ';
return 0;
}