第十三次csp 第二题 碰撞的小球
模拟
#include <bits/stdc++.h>
using namespace std;
int n,l,t;
struct ball
{
int pos,v;
void init(int p)
{
pos=p;
v=1;
}
void run()
{
pos+=v;
//printf("%d ",pos);
if(pos==l||pos==0)
{
v=v*(-1);
}
}
void change()
{
v=v*(-1);
}
};
ball a[150];
void check()
{
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(a[i].pos==a[j].pos)
{
a[i].change();
a[j].change();
}
}
}
}
int main()
{
scanf("%d%d%d",&n,&l,&t);
for(int i=1;i<=n;i++)
{
int p;
scanf("%d",&p);
a[i].init(p);
}
for(int i=1;i<=t;i++)
{
for(int j=1;j<=n;j++)
{
a[j].run();
}
check();
//cout<<endl;
}
for(int i=1;i<=n;i++)
{
printf("%d ",a[i].pos);
}
return 0;
}