vector+排序(60%通过)
#include <iostream>
#include <map>
#include <algorithm>
#include<vector>
using namespace std;
multimap <int, int> keeptimes;
int times[1000005];
typedef pair<int, int>PAIR;
bool cmp_by_value(const PAIR& lhs, const PAIR& rhs)
{
if (lhs.first == rhs.first)
return lhs.second < rhs.second;
else return lhs.first < rhs.first;
}
int main()
{
long long n, k;
cin >> n >> k;
int less = 10004;
int lesskey = 0;
int save;
for (long long i = 1; i <=n; i++)
{
cin >> times[i];
save = times[i];
keeptimes.insert(pair<int, int>(save, i));
}
vector<PAIR>kk(keeptimes.begin(), keeptimes.end());
vector<PAIR>::iterator iter = kk.begin();
sort(kk.begin(), kk.end(), cmp_by_value);
iter = kk.begin();
int j = 0;
int saveorder;
while (j < k)
{
cout <<iter->second<<endl;
save = iter->first;
saveorder = iter->second;
kk.erase(iter);
kk.push_back(pair<int, int>(save+times[saveorder],saveorder ));
sort(kk.begin(), kk.end(), cmp_by_value);
iter = kk.begin();
iter = kk.begin();
j++;
}
}