我判断字典序大小时没有考虑会出现相同的数,之后会继续修改,但是为啥会MLE,求解。
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll maxn=1e5+10;
bool cmpfu(ll x,ll y){
return x>y;
}
struct dic{
ll num;
ll id;
}xxx[maxn];
bool cmp(dic a,dic b){
return a.num<b.num;
}
int main(){
ll n,m;
cin >> n >>m;
for(ll i=1;i<=n;i++){
xxx[i].id=i;
ll x;
cin >> x;
vector<int> vec;
vec.push_back(x);
if(x>0){
for(ll j=1;j<=m;j++){
vec.push_back(vec[j-1]*i);
}
sort(vec.begin(),vec.end());
}else if(x<0){
for(ll j=1;j<=m;j++){
vec.push_back(vec[j-1]*i);
}
sort(vec.begin(),vec.end(),cmpfu);
}
xxx[i].num=vec[0];
}
sort(xxx+1,xxx+n+1,cmp);
for(ll i=1;i<=n;i++){
cout << xxx[i].id << " ";
}
return 0;
}