1. 程式人生 > 其它 >CCF 201803-2 碰撞的小球

CCF 201803-2 碰撞的小球

沒有好辦法就暴力,沒有好辦法就模擬。

#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 << ' '; } }