# [b938: kevin 愛殺殺(STL解)](https://zerojudge.tw/ShowProblem?problemid=b938)  **想法**: 這題我沒有用Linked list解,我想到的是將已經死了的人設為-1再用迭帶器遍歷,若為-1時就改殺下一個人不為-1的人 ```cpp= #include <bits/stdc++.h> #define ll long long #define pii pair<int, int> using namespace std; void solve() { //讀入資料 queue<int> q; vector<int> v; //也可以用array int n, m, ki; vector<int>::iterator it; cin >> n >> m; for (int i = 1; i <= n; ++i) v.emplace_back(i); for (int i = 0; i < m; ++i) { cin >> ki; q.push(ki); } //solve bool out_of_vectorLimit = 0; //初始化是否超出vector的flag while (!q.empty()) { if (q.front() >= n || v[q.front()-1] == -1) //(如果給定要殺的人超出範圍或剛好為最後一位) 或 (是該人已被殺) { cout << "0u0 ...... ?" << '\n'; } else { it = v.begin()+(q.front()); //將迭帶器指為將被殺的人 while(*it == -1) { if (it >= v.begin()+n-1) //如果到了最後一個人也被殺就直接break,否則超出範圍it的值會是0 { cout << "0u0 ...... ?" << '\n'; out_of_vectorLimit = 1; break; } it++; } if (out_of_vectorLimit == 0) { cout << *it << '\n'; *it = -1; } out_of_vectorLimit = 0; //init flag } q.pop(); } } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); solve(); return 0; } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up