题目链接
第一次排序后是按新的下标算新的权值……没注意到就wa了(星际玩家)
#include<cstdio>
#include<algorithm>
using namespace std;
#define _rep(i,a,b) for(int i=(a);i<=(b);i++)
const int N=2e4+10;
int e[11];
struct node{
int w,id;
}man[N];
int cmp(node a,node b)
{
return a.w>b.w||(a.w==b.w&&a.id<b.id);
}
int main()
{
//freopen("in.txt","r",stdin);
int n,k;
scanf("%d%d",&n,&k);
_rep(i,1,10)scanf("%d",&e[i]);
_rep(i,1,n)
{
scanf("%d",&man[i].w),man[i].id=i;
}
sort(man+1,man+1+n,cmp);
_rep(i,1,n)man[i].w+=e[(i-1)%10+1];//这里是用新的序号
sort(man+1,man+1+n,cmp);
_rep(i,1,k)printf("%d ",man[i].id);
return 0;
}