zoukankan      html  css  js  c++  java
  • 【小米OJ】带小学生排队(多元素排序后,按特定位置移动)

     

     解法:先按一定规则排序(身高从大到小,然后身高相同情况下,人数从小到大),然后移动元素。

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 struct xy{
     5   int x;
     6   int y;
     7 };
     8 bool cmp(struct xy a,struct xy b){
     9     if(a.x==b.x) return a.y<b.y;
    10     else return a.x>b.x;
    11 }
    12 int main()
    13 {
    14     // please write your code here
    15     int n;
    16      ios::sync_with_stdio(false);///提高cin输入效率
    17     cin>>n;
    18     struct xy arr[n+10];
    19     int ans[n+10];
    20     for(int i=0;i<n;i++)
    21        cin>>arr[i].x>>arr[i].y;
    22     sort(arr,arr+n,cmp);
    23     for(int i=0;i<n;i++){
    24         int temp = arr[i].y;
    25         for(int j=i;j>temp;j--) ans[j] = ans[j-1];
    26         ans[temp] = i;
    27     }
    28     for(int i=0;i<n;i++)
    29         cout<<arr[ans[i]].x<<" "<<arr[ans[i]].y<<" ";
    30     return 0;
    31 }
    不忘初心,方得始终。只有走过弯路,才更确信当初最想要的是什么。
  • 相关阅读:
    797. 所有可能的路径
    1286. 字母组合迭代器
    216. 组合总和 III
    77. 组合
    784. 字母大小写全排列
    90. 子集 II
    78. 子集
    47. 全排列 II
    46. 全排列
    40. 组合总和 II
  • 原文地址:https://www.cnblogs.com/wszhu/p/12798023.html
Copyright © 2011-2022 走看看