(水题)洛谷

https://www.luogu.org/problemnew/show/P1583

设计一个strcut cmp用来比较,就可以了。

#include<bits/stdc++.h>
using namespace std;
#define ll long long

struct P{
    int W;
    int idx;
}p[20005];

struct cmp{
    bool operator()(P p1,P p2){
        if(p1.W!=p2.W)
            return p1.W>p2.W;
        else
            return p1.idx<p2.idx;
    }
};

int E[11];

int main(){
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=1;i<=10;i++)
        scanf("%d",&E[i]);
    for(int i=1;i<=n;i++){
        scanf("%d",&p[i].W);
        p[i].idx=i;
    }

    sort(p+1,p+1+n,cmp());
    for(int i=1;i<=n;i++){
        p[i].W+=E[(i-1)%10+1];
    }

    sort(p+1,p+1+n,cmp());

    for(int i=1;i<=k;i++){
        printf("%d",p[i].idx);
        if(i==k)
            printf("
");
        else
            printf(" ");
    }

}
原文地址:https://www.cnblogs.com/Yinku/p/10317026.html