这道题目我是考虑到 用map进行标记,之后放到NODE中进行排序。
但是其实不用那么麻烦的,直接从后往前输出就可以(开数组)
#include<iostream>
#include<map>
#include<vector>
#include<math.h>
#include<algorithm>
using namespace std;
struct node{
int value;
int time;
};
bool cmp(node a,node b){
return a.value>b.value;
}
int main(){
int n;
vector<node>v;
cin>>n;
map<int,int>a;
for(int i=1;i<=n;i++){
int b;
cin>>b;
a[abs(b-i)]++;
}
for(auto it:a){
v.push_back({it.first,it.second});
}
sort(v.begin(),v.end(),cmp);
for(int i=0;i<v.size();i++){
if(v[i].time>1) cout<<v[i].value<<" "<<v[i].time<<endl;
}
}