#include <vector> #include <iostream> #include <string> #include <queue> using namespace std; vector<pair<int, string>>strs; vector<pair<int, string>>way; queue<pair<int, string>> q; int n, m,cur_j; void dfs(int step, int empty) { pair<int, string> k; int i = step; if(empty!=1&&step==strs.size()) return; if (empty == 1 && !q.empty()) { k = q.front(); q.pop(); way[cur_j++] = k; dfs(i, n); return; } else if (strs[i].first == 1) { way[cur_j++] = strs[i]; dfs(i + 1, empty - 1); return; } else if (strs[i].first == 0) { k = strs[i]; q.push(k); strs.erase(strs.begin() + i); dfs(i, empty); return; } return; } int main() { cin>>n; cin>>m; for(int i=0;i<m;i++) { string s; cin>>s; int flag; if(s[0]=='P') flag = 0; else flag = 1; strs.push_back(make_pair(flag, s)); } way.resize(m); int i = 0; cur_j = 0; while(strs[i].first==1) { way[cur_j++]=strs[i]; i++; } way[cur_j++] = strs[i]; dfs(i+1,n); cout<<cur_j<<endl; for(int i=0;i<cur_j;i++) cout<<way[i].second<<endl; return 0; } // 2 3 10 //V0 V1 V2 P3 P4 P5 V6 P7 V8 V9
快手笔试,推荐系统
最新推荐文章于 2024-04-16 05:21:51 发布