原题链接:CSP 201803-2 碰撞的小球
还记得大二的时候我觉得这个题好难。。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int MAX=5e5+10;
struct node
{
int pos;
int v;//小球方向 1表示向右 -1表示向左
}a[110];
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(0);
int n,l,t;
cin>>n>>l>>t;
for(int i=1;i<=n;i++)
{
cin>>a[i].pos;
a[i].v=1;
}
for(int i=1;i<=t;i++)
{
for(int j=1;j<=n;j++)
{
if(a[j].pos==0)
{
a[j].v=1;
}
else if(a[j].pos==l)
{
a[j].v=-1;
}
a[j].pos+=a[j].v;
for(int k=1;k<=n;k++)
{
if(a[j].pos==a[k].pos)
{
a[j].v*=-1;
a[k].v*=-1;
}
}
}
}
for(int i=1;i<=n;i++)
{
cout<<a[i].pos<<" ";
}
return 0;
}