#include #include #include

using namespace std;

bool cmp(pair<int, int>& a, pair<int, int>& b) { return a.first < b.first; }

int main() { int n; cin >> n;

vector<int> a(n);
for (int i = 0; i < n; i++) {
    cin >> a[i];
}

vector<pair<int, int>> b(n);
for (int i = 0; i < n; i++) {
    b[i] = make_pair(a[i], i + 1);
}

sort(b.begin(), b.end(), cmp);

vector<int> p(n);
for (int i = 0; i < n; i++) {
    p[b[i].second - 1] = i + 1;
}

for (int i = 0; i < n; i++) {
    cout << p[i] << " ";
}
cout << endl;

return 0;
用C++解决以下问题:给出一个长度为n的数组 a_1a_2a_3an 求一个字典序最小的1~n的排列P 使得原数组重新排列成a_P_1a_P_2a_P_3a_P_n后每一个前缀的平均数都大于等于 0 。输入样例:5-1 -2 -3 4 5输出样例:4 1 2 5 3

原文地址: https://www.cveoy.top/t/topic/iQvO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录