Я переставляю массив int таким образом, чтобы все отрицательные значения находились справа, а все положительные и нули находились слева от массива, без изменения порядка положительных и отрицательных элементов в данном массиве.
ДляПример: -
n = 18
заданный вход : 34 99 40 70 -28 27 -49 96 -18 -90-6 -2 92 82 53 -47 -98 -53
ожидаемый выход : 34 99 40 70 27 96 92 82 53 -28 -49 -18 -90 -6 -2 -47 -98 -53
мой вывод : 99 40 70 34 27 96 53 82 92 -53 -98 -47 -2 -6 -90 -18 -49 -28 -84
#include<algorithm>
#include<iostream>
using namespace std;
bool comp(int a,int b){
if((a>=0 && b>=0) || (a<0 && b<0)|| (a<0 && b>=0)) return false;
if(a>=0 && b<0) return true;
}
int main(){
int n;
cin>>n;
int a[n];
for(int j=0;j<n;j++)cin>>a[j];
sort(a,a+n,comp);
for(int j=0;j<n;j++)cout<<a[j]<<" ";
return 0;
}
почему он не перестраивается, как ожидалось?Я не мог найти никаких ошибок.