#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <algorithm>
using namespace std;
int n,k,E[11];
//定义变量,需要获取的人数n,以及k个人会获得照片
struct qvq{
int bh;
int w;
int lx;
}np[20005];
//结构体qvq存储每个人信息,qh表示编号(默认的初始化编号),w表示权值,lx表示类别(十种)
int qtq(qvq a,qvq b){
if(a.w!=b.w)return a.w>b.w;
return a.bh<b.bh;
}
//结构体排序规则,如果权值不相同,则按照权值从大到小排序,如果权值相同,则按照编号从小到大排序
int main(){
scanf("%d%d",&n,&k);
for(int i=0;i<10;i++){scanf("%d",&E[i]);}
for(int i=0;i<n;i++){
scanf("%d",&np[i].w);
np[i].bh=i+1;
}
//获取n,k,以及十种类别对应的权值,获取1-n个学生对应的权值,以及学生对应的编号
sort(np,np+n,qtq);
//排序np数组
for(int i=0;i<n;i++){
np[i].lx=i%10;
np[i].w+=E[np[i].lx];
}
//计算重新排序好的np数组中的类别,并且将计算的类别对应的权值加到相应位置上
sort(np,np+n,qtq);
//再次排序
for(int i=0;i<k;i++)printf("%d ",np[i]);
//输出前k个人的初始编号
return 0;
}
P1583 魔法照片
2019-05-10