今天做题遇到了这样一种情况:
每个人有初始数据a,b
当排序的时候,我们依照a进行排序,但是b的顺序也要跟着a的顺序改变,这时应该怎么做?
参考题目:https://www.luogu.org/problem/P1223
该题中不仅要按照每个人的时间升序排序,还要输出每个人原来的序号,因此,一般的想法是建立一个结构来储存数据,然后利用sort排序,代码如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct man
{
int time;
int num;
};
bool cmp(man &a, man &b)
{
return a.time < b.time;
}
int main()
{
int n;
cin >> n;
double sum=0;
vector<man> vec(n);
for (int i = 0; i < n; i++)
{
cin >> vec[i].time;
vec[i].num = i + 1;
}
sort(vec.begin(), vec.end(),cmp);
int i = 0;
for (int i = 0; i < n; i++)
{
for (int k = 0; k < i; k++)
{
sum += vec[k].time;
}
}
for (int i = 0; i < n; i++)
{
cout << vec[i].num<<" ";
}
printf(