ACM练习 校赛183F:公平的游戏(TLE)【vector不重复添加、删除指定元素、排序】
生活随笔
收集整理的這篇文章主要介紹了
ACM练习 校赛183F:公平的游戏(TLE)【vector不重复添加、删除指定元素、排序】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
總時間限制: 1000ms 內(nèi)存限制: 256000kB
描述
如果說考試還會受到天賦的影響,那最公平的游戲就非抽獎莫屬了。
輸入
第一行輸入一個整數(shù) N,代表操作的總數(shù)
接下來的 N 行中,第 i 行包含兩個整數(shù),分別為操作碼 p 和操作數(shù) k
操作碼 p 定義如下:
0: 將號碼 k 添加到記錄中(忽略重復(fù))
1: 將號碼 k 從記錄中刪除
2: 宣布記錄中第 k 大的號碼中獎(保證該號碼存在)
保證輸入的操作碼一定在上述定義中。
除滿足上述條件外,0 < N <= 100000, -1000000000 <= k <= 1000000000
輸出
對于每一個操作,若 p = 0 或 p = 1,不進(jìn)行輸出
對于每一個操作,若 p = 2,輸出一行,包含一個整數(shù),為該操作選出的中獎號碼
樣例輸入
8 0 1 0 2 0 2 0 3 2 3 1 2 2 2 2 1樣例輸出
1 1 3代碼(TLE)
超出時間限制了,但測試用例是對的,里面vector的用法可以借鑒
#include<iostream> #include<vector> #include<algorithm> using namespace std; int mysort(int a1, int a2) {return(a1 > a2); } int main() {vector<int> arr;//輸入總數(shù)int total;cin >> total;//循環(huán)int i;int p, k;std::vector<int>::iterator pos;for (i = 0; i < total; i++){cin >> p >> k;if (p == 0)//添加{//排除重復(fù)元素pos = find(arr.begin(), arr.end(), k);if (pos == arr.end()){arr.push_back(k);}}else if (p == 1)//刪除k{pos = find(arr.begin(), arr.end(), k);if (pos != arr.end()){arr.erase(pos);}}else if (p == 2)//中獎{//排序sort(arr.begin(), arr.end(), mysort);//找位置輸出cout << arr[k - 1] << "\n";}}system("pause"); }總結(jié)
以上是生活随笔為你收集整理的ACM练习 校赛183F:公平的游戏(TLE)【vector不重复添加、删除指定元素、排序】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeBlocks报错原因分析:找不到
- 下一篇: ACM练习 校赛183F:公平的游戏(T