ccf碰撞的小球(100分)
#include<iostream>
#include<vector>
#include<utility>
#include<algorithm>
using namespace std;
vector<pair<int,int>>x;
vector<int>yy;
vector<int>flag;
bool cmp(pair<int, int>a, pair<int, int>b){
return a.first < b.first;//根據fisrt的值升序排序
}
int main() {
int n, y, t,bl;
cin >> n >> y >> t;
for (int i = 0; i < n; i++) {
cin >> bl;
x.push_back(make_pair(bl,0));
yy.push_back(bl);//發現資料給的沒有排序,需要用sort排序下,然後再兩個陣列比較記錄後的值,意思就是再變回去
}
//vector<pair<int, int>>::iterator it;
sort(x.begin(), x.end(), cmp);//陣列排序
for (int i = 0; i < n; i++) {//再變回去
for (int j = 0; j < n; j++) {
if (yy[i] == x[j].first)
flag.push_back(j);
}
}
for (int i = 0; i < t; i++) {
for (int j = n-1; j >=0; j--) {
//首先先處理碰撞,如果兩個求的位置一樣,讓他們按照相反的方向前進就好了,second表示前進方向,向左是1,向右是0
if (j>=1&&x[j].first == x[j - 1].first ) {
x[j].second = 0;
x[j - 1].second = 1;
}
//按照他們的前進方向前進,需要注意如果到頭了需要改變方向,就是改變second的值
if (x[j].second == 0) {
if (x[j].first + 1 > y) {
x[j].first--;
x[j].second = 1;
}
else
x[j].first++;
}
else {
if (x[j].first - 1 < 0) {
x[j].first++;
x[j].second = 0;
}
else
x[j].first--;
}
}
}
for (int i = 0; i < n; i++)
cout << x[flag[i]].first << " ";
}
相關文章
- CCF-CSP 20180302:小球碰撞
- js小球重力和碰撞效果JS
- HTML5畫布-小球碰撞HTML
- JavaScript之多小球非對心彈性碰撞JavaScript
- 【h5遊戲開發】egret引擎p2物理引擎(2) - 小球碰撞地面搞笑的物理現象H5遊戲開發
- 奇妙的canvas:彈跳小球Canvas
- 小球彈彈樂
- canvas小球亂撞Canvas
- canvas小球碰壁效果Canvas
- CCF ISBN
- [SDOI2008] Sue 的小球 題解
- JavaScript小球碰壁詳解JavaScript
- canvas小球擺動效果Canvas
- 小球運動-常規1
- 【不可思議的前端】動如脫兔的小球前端
- CCF NLP比賽
- 雜湊碰撞
- 碰撞檢測
- canvas小球碰壁隨機運動Canvas隨機
- canvas小球拋物線運動Canvas
- RFID的防碰撞是什麼
- ORA,全球文化與科技的碰撞
- MD5碰撞的演化之路
- UE4的移動碰撞
- css3小球上下移動效果CSSS3
- canvas繪製小球漸隱漸現Canvas
- CCF 202006-2 稀疏向量【map的使用】
- python如何檢測pygame中的碰撞PythonGAM
- 策略模式、策略模式與Spring的碰撞模式Spring
- 公有云和開源的商業碰撞
- 密碼學系列之:碰撞抵禦和碰撞攻擊collision attack密碼學
- ccf省賽3等獎
- CCF 201409-2 畫圖
- 7-22 用天平找小球 (10分)
- CSS3小球靜態環繞效果CSSS3
- JS寫的不咋地的碰撞檢測JS
- unity3d碰撞Unity3D
- AIGC遇上低程式碼的碰撞與融合AIGC