题意:有n个人,每个人要取Ai块钱,每次最多取X块钱,没取完就回到队尾继续排队,取完就离开队伍
输出离开队伍的人的顺序。
思路:算一下每个人需要几次可以取完他需要的钱,输出的时候按照次数从少到多一次输出。
C++代码:
#include <stdio.h>
#include <queue>
#include <iostream>
#include <map>
using namespace std;
map<int, vector<int>> res;
int main(){
int T;
cin >> T;
for(int t = 1; t <= T; t++){
res.clear();
int n, x;
cin >> n >> x;
for(int i = 0; i < n; i++){
int tmp;
cin >> tmp;
int qq = tmp / x;
if(tmp % x != 0) qq += 1;
if(res.find(qq) != res.end())
res[qq].push_back(i + 1);
else{
vector<int> v;
res.insert(make_pair(qq, v));
res[qq].push_back(i + 1);
}
}
printf("Case #%d:", t);
for(auto it = res.begin(); it != res.end(); it++){
auto v = it->second;
for(int i = 0; i < v.size(); i++){
cout << " " << v[i] ;
}
}
cout << endl;
}
}
网友评论