-
Notifications
You must be signed in to change notification settings - Fork 2
/
1396.cpp
43 lines (34 loc) · 1006 Bytes
/
1396.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, k, c = 1;
int i;
while(cin >> n >> k && n > 0) {
vector<string> nomes(n);
map<string, int> ordem;
for(i = 0; i < n; ++i) {
cin >> nomes[i];
ordem[nomes[i]] = i;
}
int flag = 0;
while(!ordem.empty() && k > 0) {//ENQUANTO DIFERENTE DE VAZIO
for(map<string, int>::iterator it = ordem.begin(); it != ordem.end() && k > 0; ++it){
if (it->second - flag <= k) {
k -= (it->second - flag);
for(i = it->second; i > flag; --i) {
nomes[i] = nomes[i - 1];
++ordem[nomes[i - 1]];
}
nomes[flag] = it->first;
++flag;
ordem.erase(it->first);
break;
}
}
}
cout << "Instancia " << c++ << '\n';
for(i = 0; i < n; ++i)
cout << nomes[i] << ' ';
cout << "\n\n";
}
}