CCF 201803-2 碰撞的小球
阿新 • • 發佈:2022-05-11
沒有好辦法就暴力,沒有好辦法就模擬。
#include<iostream> using namespace std; struct node { int dis; bool dir;//1是向右 0是向左 } p[1005]; int num[1005];//用來記錄每個位置有幾個球 int sign[1005];//用來標誌是否需要反向 int main() { int n,t,l; cin >> n >> t >> l; for(int i = 0 ; i < n ; i++) { cin >> p[i].dis; p[i].dir= 1; } while(l--) { for(int i = 0 ; i < n ; i++) { if(num[p[i].dis] == 2) { sign[p[i].dis] = 1; } if(p[i].dis == 0 || p[i].dis == t || sign[p[i].dis] == 1) { p[i].dir= !p[i].dir; } if(num[p[i].dis] > 0){ num[p[i].dis]--; if(num[p[i].dis] == 0 && sign[p[i].dis] == 1){ sign[p[i].dis] = 0; } } if(p[i].dir) { p[i].dis++; } else { p[i].dis--; } num[p[i].dis]++; } } for(int i = 0 ; i < n ; i++) { cout << p[i].dis << ' '; } }