题目描述
解题思路
不要被题目所吓到。只需要考虑每个时刻所有可能转换方向的状态并将其罗列出即可。而这也正是计算机解题相对于人工分析的优点所在。
代码
//#include<bits/stdc++.h>
#include<cstdio>
int x[1500];
int dir[1500] ;//1为向右,-1为向左
int main()
{
for (int i = 0;i < 1500;i++) dir[i] = 1;
int n, l, t;
scanf("%d %d %d", &n, &l, &t);
for (int i = 0;i < n;i++)
{
scanf("%d", &x[i]);
}
int time = 0;
while (time < t)
{
for (int i = 0;i < n;i++)
{
x[i] += dir[i];
if (x[i] == 0 || x[i] == l) dir[i] = -dir[i];
}
for (int i = 0;i < n - 1;i++)
{
for (int j = i + 1;j < n;j++)
{
if (x[j] == x[i])
{
dir[i] = -dir[i];
dir[j] = -dir[j];
}
}
}
time++;
}
for (int i = 0;i < n;i++)
printf("%d ", x[i]);
}