CSP:碰撞的小球
原题链接
满分代码
#include <bits/stdc++.h>
using namespace std;
int a[101];
int b[101];
int main()
{
for (int i = 0; i < 101; ++i) {
b[i] = 1;
a[i] = 0;
}
int n, L, t;
cin >> n >> L >> t;
int x;
for (int i = 0; i < n; ++i) {
cin >>x;
a[i] = x;
}
for (int i = 0; i < t; ++i) {
for (int j = 0; j < n; ++j) {
a[j] += b[j];
if (a[j] == 0 || a[j] == L) {
b[j] = -b[j];
}
}
for (int k = 0; k < n; ++k) {
for (int q = 0; q < n; ++q) {
if (q == k) {
continue;
}
if (a[k] == a[q]) {
b[k] = -b[k];
break;
}
}
}
}
cout << a[0];
for (int i = 1; i < n; ++i) {
cout << " " << a[i];
}
cout << endl;
return 0;
}