zoukankan      html  css  js  c++  java
  • 小米oj 帮小学生排队(排序+插入)

    - 帮小学生排队

    序号:#18难度:有挑战时间限制:1000ms内存限制:10M

    描述

    用一个数组表示一群正在排队的小学生,每个小学生用一对整数 H, K 来表示:H 表示这个小学生的身高,K 表示这个小学生前面应该有 K 个人的身高 >= 他。

    写一个算法,对给出的一组小学生计算出符合描述的正确排序。

    输入

    输入为一组整数,以空格分隔:

    • 第 1 个数字表示小学生的数量 n;
    • 从第 2 个数字起,后续的数字两两一组,分别代表每个小学生的 H 和 K 的值:H_1 ext{ }K_1 ext{ }H_2 ext{ }K_2 cdots H_n ext{ }K_nH1​ K1​ H2​ K2​⋯Hn​ Kn​.

    输出

    根据输入,按照题目要求对小学生进行排序,每个小学生对应的 H 和 K 值为一组,按组输出,数字间使用空格分隔。比如H_1' ext{ }K_1' ext{ }H_2' ext{ }K_2' cdots H_n' ext{ }K_n'H1′​ K1′​ H2′​ K2′​⋯Hn′​ Kn′​

    输入样例

    6 7 0 4 4 7 1 5 0 6 1 5 2

     复制样例

    输出样例

    5 0 7 0 5 2 6 1 4 4 7 1
    
    #include<bits/stdc++.h>
    #include<stdio.h>
    #include<iostream>
    #include<cmath>
    #include<math.h>
    #include<queue>
    #include<set>
    #include<map>
    #include<iomanip>
    #include<algorithm>
    #include<stack>
    using namespace std;
    #define inf 0x3f3f3f3f
    typedef long long ll;
    int n;
    int id[1000];
    int h[1000];
    int k[1000];
    bool cmp(int i,int j)
    {
        if(h[i]!=h[j])return h[i]>h[j];
        else return k[i]<k[j];
    }
    int ans[1000];
    void ins(int i,int len)
    {
        int pos=k[i];
        for(int j=len;j>pos;j--)ans[j]=ans[j-1];
        ans[pos]=i;
    }
    int main()
    {
    #ifndef ONLINE_JUDGE
        freopen("in.txt","r",stdin);
    #endif // ONLINE_JUDGE
    
        while(cin>>n)
        {
        for(int i=0;i<n;i++)cin>>h[i]>>k[i];
        for(int i=0;i<n;i++)id[i]=i;
        sort(id,id+n,cmp);
        memset(ans,-1,sizeof(ans));
        for(int i=0;i<n;i++)
        {
            ins(id[i],i);
        }
        for(int i=0;i<n;i++)cout<<h[ans[i]]<<" "<<k[ans[i]]<<" ";
        cout<<endl;
        }
        return 0;
    }
    
    
    
  • 相关阅读:
    问世即屠榜的bert
    写给日后面试的小朋友们~
    SQL笔记续补
    《姜子牙》视频笔记
    知识图谱之小米的落地与应用探索
    Pyspark ml
    一个小时学会用 Go 编写命令行工具
    C#设计模式-组合模式(Composite Pattern)
    C#设计模式-桥接模式(Bridge Pattern)
    C#设计模式-装饰器模式(Decorator Pattern)
  • 原文地址:https://www.cnblogs.com/linruier/p/9886224.html
Copyright © 2011-2022 走看看