Help me in solving CURSED problem

My issue

how can i solve this?

My code

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main() {
	int t;
	cin>>t;
	while(t--){
	    int n;
	    cin>>n;
	    vector<int> v(n,0);
	    for(int i=0;i<n;i++){
	        cin>>v[i];
	    }
	    sort(v.begin(),v.end());
	    long long ans=0;
	    int curr=0;
	    for(int i=1;i<n;i++){
	        if(v[i]==v[i-1]){
	            if(i!=n-1)  swap(v[i],v[i+1]);
	        }
	    }
	    for(int i=0;i<n;i++){
	        if(i!=0 and curr>=v[i]) ans++;
	        curr+=v[i];
	    }
	    cout<<ans<<endl;
	    for(auto it:v)  cout<<it<<" ";
	    cout<<endl;
	}
	return 0;
}

Problem Link: Cursed Indices Practice Coding Problem - CodeChef

Your logic is wrong here is the code
include <bits/stdc++.h>
using namespace std;

int main() {
int t;
cin>>t;
while(t–){
long long n;
cin>>n;
vectora(n);
for(int i=0;i<n;i++) cin>>a[i];
sort(a.begin(),a.end());
long long count=0,sum=a[0];
vectore1,e2; e1.push_back(a[0]);
for(int i=1;i<n;i++){
if(a[i]>sum) e1.push_back(a[i]),sum+=a[i];
else e2.push_back(a[i]);
}
cout<<e2.size()<<endl;
for(int i=0;i<e1.size();i++) cout<<e1[i]<<" “;
for(int i=0;i<e2.size();i++) cout<<e2[i]<<” ";
cout<<endl;
}
return 0;
}
You can use sorting and extra array here