CCF 2018 練習題 2 碰撞的小球
阿新 • • 發佈:2019-02-02
#include <iostream> #include <algorithm> using namespace std; class ball{ public: int pos; char v; int index; ball(){ v=1; } }; bool cmpPos(ball &a,ball &b){ return a.pos<b.pos; } bool cmpIndex(ball &a,ball &b){ return a.index<b.index; } int n=0,l=0,t=0; int main(){ cin>>n>>l>>t; ball* ballp = new ball[n]; for(int i=0;i<n;i++){ cin>>ballp[i].pos; ballp[i].index=i; } sort(ballp,ballp+n,cmpPos); for(int i=0;i<t;i++){ for(int j=0;j<n;j++){ ballp[j].pos+=ballp[j].v; } if(ballp[0].pos==0){ ballp[0].v-=2*ballp[0].v; } if(ballp[n-1].pos==(l)){ ballp[n-1].v-=2*ballp[n-1].v; } for(int j=1;j<n;j++){ if(ballp[j].pos==ballp[j-1].pos){ ballp[j].v-=2*ballp[j].v; ballp[j-1].v-=2*ballp[j-1].v; } } } sort(ballp,ballp+n,cmpIndex); for(int j=0;j<n-1;j++){ cout<<ballp[j].pos<<" "; } cout<<ballp[n-1].pos; cout<<endl; delete [] ballp; return 0; }