Pagini recente »
Monitorul de evaluare
|
Rating Name Name (BigBoss_29)
|
testbkt11
|
Monitorul de evaluare
|
Cod sursă (job #686009)
Cod sursă (job
#686009)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("arbperm.in");
ofstream fout("arbperm.out");
vector <int> baza;
void nexp_perm(){
int poz = 0;
int n = baza.size();
for(int i = 0; i < n; i++){
if(baza[i] == n){
if(i == n - 1){
baza.pop_back();
nexp_perm();
baza.insert(baza.begin(), n);
break;
}else{
swap(baza[i], baza[i + 1]);
break;
}
}
}
}
int main()
{
//1.
int n, k;
//2.
fin >> n >> k;
int v[n];
//3.
for(int i = 0; i < n; i++) fin >> v[i];
int poz = 0;
for(int i = 0; i < n; i++){
if(v[i] == n) poz = i;
else{
baza.push_back(v[i]);
}
}
//poz++;
int cnt = 0;
while(true){
/*
cout << "Baza permutarii noastre : ";
for(int i = 0; i < n - 1; i++) cout << baza[i] << " ";
cout << endl << "Pozitia lui " << n << " in permutare : " << poz << endl;
cout << " -- > Formam , de la permutarea asta , " << n - poz - 1 << " altele" << endl;
*/
if(k <= n - poz - 1){
//cout << " -- > A k-a permutare e din baza asta !! Aflam poz la care a n..." << endl;
//cout << " -- > k = " << k << endl;
poz = poz + k;
//cout << " -- > Pozitia este " << poz << endl;
break;
}else{
//cout << " -- > Mai cautam..." << endl;
k -= n - poz;
poz = 0;
nexp_perm();
}
//cout << endl;
}
baza.insert(baza.begin() + poz, n);
for(int i = 0; i < n; i++){
fout << baza[i] << " ";
}
return 0;
}