CUIT-ACM 01-16 B

B - Reading CodeForces - 234B
题目大意:
将输入的n个数字分别标记为1~n,然后对那n个数字排序,最后再按照排序输出原来的序号
思路:
结构体排序!!!
代码:
https://vjudge.net/solution/7921084/SwnKb0ZJWOrlFqe7v6M0

#include
#include
#include
#include
using namespace std;
struct st
{
    int num;
    int k;
}a[1000];

bool cmp1(st p,st q)
{
    return p.k>q.k;
}
bool cmp2(st p,st q)
{
    return p.num0)
    {
        scanf("%d",&b[i]);
        a[i].num=i+1;
        a[i].k=b[i];
        i++;
        n--;
    }
    sort(a,a+n1,cmp1);
    printf("%d\n",a[m-1].k);
    sort(a,a+m,cmp2);

    for(i=0;i

结构体知识点:
数组定义的时候就确定了类型,所以如果要把多个类型的数据存放在一个地址上就要打包→结构体数组
格式:

struct node(结构体名称)
{
    int num;
    int val;
    char ch[ ];
}Node[ ];(申明数组,Node[ ]为集合了num、val、ch[ ]的一个大数组)

输入格式:

for(i=0;i

排序:
sort(Node,Node+n,cmp);(下标为0的元素到下标为n-1的元素) cmp:排序定义

bool cmp(node a,node b)              (c++)
{
    if(a.num==b.num)//按照num的大小排序
    {
        if(a.val==b.val)//按照val的大小排序
        {
                return a.chb.num;
}

你可能感兴趣的:(CUIT-ACM 01-16 B)