#include<algorithm>
using namespace std;
int extra[11],initial[20001],order[20001];
bool cmp(int a,int b)
{
if(initial[a]==initial[b]) return a<b;//从大到小排序
else return initial[a]>initial[b];//序号小优先
}
int main()
{
int n,k;
int i;
cin>>n>>k;
for(i=1;i<=10;i++) cin>>extra[i];
for(i=1;i<=n;i++)
{
cin>>initial[i];
order[i]=i;
}
sort(order+1,order+n+1,cmp);//第一次排序
for(i=1;i<=n;i++)//分类处理
initial[order[i]]+=extra[(i-1)%10+1];
sort(order+1,order+n+1,cmp);//第二次排序
for(i=1;i<=k;i++)
cout<<order[i]<<" ";
cout<<endl;
return 0;
}
做了下魔法照片,本来是想用vector去做的,但是发现有些麻烦,现在还是离不开数组。
这道题做得时候是有思路的,我的想法是二维数组和结构体直接上,后来发现题解中有用sort去做;
思路比较特别,深思。