题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805260780945408
这题注意一下差值次数为1的不要输出就行了

代码

  1. #include<cstdio>
  2. #include<map>
  3. #include<cmath>
  4. #include<algorithm>
  5. using namespace std;
  6. int main(){
  7. int n, temp;
  8. bool bool_list[10010];
  9. fill(bool_list, bool_list + 10000, false);
  10. map<int, int> m;
  11. scanf("%d", &n);
  12. for(int i = 1; i <= n; i++){
  13. scanf("%d", &temp);
  14. if(bool_list[abs(temp - i)] == false){
  15. m[abs(temp - i)] = 1;
  16. bool_list[abs(temp - i)] = true;
  17. } else m[abs(temp - i)]++;
  18. }
  19. for(auto it = m.rbegin(); it != m.rend(); it++){
  20. if(it->second > 1) printf("%d %d\n", it->first, it->second);
  21. }
  22. }