
как можно доработать написанный мной код, чтобы он удовлетворял задаче? или написать похожий, но используя команды только такого уровня
как можно доработать написанный мной код, чтобы он удовлетворял задаче? или написать похожий, но используя команды только такого уровня #include
using namespace std;
void sort_even_pos(int* m, const int n) {
for (int i = 0; i < n - 1; i += 2) {
int k = i;
for (int j = i + 2; j < n; j += 2) {
if (m[j] < m[k]) {
k = j;
}
}
swap(m[i], m[k]);
}
}
void sort_odd_pos(int* m, const int n) {
for (int i = 1; i < n - 1; i += 2) {
int k = i;
for (int j = i + 2; j < n; j += 2) {
if (m[j] > m[k]) {
k = j;
}
}
swap(m[i], m[k]);
}
}
int sort_and_find(int* m, const int n) {
sort_even_pos(m, n);
sort_odd_pos(m, n);
for (auto i = 0, j = 1; j < n; i += 2, j += 2) {
if (m[i] > m[j]) {
return i;
}
}
return -1;
}
int main() {
int n;
cin >> n;
auto box = new int[n];
for (auto i = 0; i < n; ++i) {
cin >> box[i];
}
auto pos = sort_and_find(box, n);
if (pos == -1) {
puts("no");
}
else {
cout #include
#include
#include
using namespace std;
int sort(vector& arr)
{
int min_0 = -1;
vector arr_0, arr_1;
for (int i = 0; i < arr.size(); i++) i & 1 ? arr_1.push_back(arr[i]) : arr_0.push_back(arr[i]);
sort(arr_0.begin(), arr_0.end(), less());
sort(arr_1.begin(), arr_1.end(), greater());
for (int i = 0; i < arr.size(); i++) arr[i] = i & 1 ? arr_1[i>>1] : arr_0[i>>1];
//for (auto& i : arr) cout
using namespace std;
bool q(int y,int p){
return(y>p);}
int main(){
int n,i,w;
cin>>n;
int a[n];
w=n;
for (i=0;i<n;i++) cin>>a[i];
for (i=0;i<n;i++){
if (w%2==0) sort(a,a+w,q);
else if (w%2==1) sort(a,a+w);
w=w-1;
}
for (i=0;i<n;i++) cout<<a[i]<<" ";
}