Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | kbubblesort.in, kbubblesort.out | Sursă | Algoritmiada 2015, Runda 2 |
Autor | Eugenie Daniel Posdarascu | Adăugată de | |
Timp execuţie pe test | 1.25 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate |
Vezi solutiile trimise | Statistici
K-BubbleSort
Se da urmatorul algoritm de sortare in ordine crescatoare a elementelor unui vector de N numere naturale:
ok = 1;
while(ok)
{
ok = 0;
for(i = 1; i < N; i++)
if(v[i] > v[i + 1])
{
aux = v[i];
v[i] = v[i + 1];
v[i + 1] = aux;
ok = 1;
}
}
Mai exact, cat timp vectorul v nu este sortat, o sa luam oricare 2 valori aflate pe pozitii consecutive si daca elementul mai mare apare inaintea celui mai mic, interschimbam valorile.
Tapescu a primit o permutare cu N elemente (un sir cu N numere naturale distincte din intervalul [1,N]). El a inceput sa sorteze elementele din permutare conform algoritmului de mai sus. Plictisit si foarte grabit ca trebuie sa se joace pe Tinder, el s-a hotarat sa se opreasca dupa primele K interschimbari din algoritm. Acum Tapescu va face o oferta: el va da permutarea de lungime N si valoarea K si voi trebuie sa ii spuneti cum o sa arate permutarea dupa primele K interschimbari. Daca faceti asta o sa va acorde 100 de puncte si posibil si 5 euro.
Date de intrare
Fişierul de intrare kbubblesort.in va contine pe prima linie 2 numere naturale N si K. Pe linia 2 vor fi N numere naturale distincte din intervalul [1,N] reprezentand permutarea de lungime N.
Date de ieşire
Fişierul de ieşire kbubblesort.out va contine pe prima linie N numere naturale reprezentand cum va arata permutarea dupa primele K interschimbari ale algoritmului BubbleSort (algoritmul de mai sus)
Restricţii
- 1 ≤ N ≤ 100.000
- 1 ≤ K ≤ 10.000.000
- Se asigura ca dupa primele K interschimbari, permutarea nu o sa fie sortata.
Exemplu
kbubblesort.in | kbubblesort.out |
---|---|
5 4 4 2 5 1 3 | 2 1 4 3 5 |