链接:P1583
-----------------------------------
一道非常水,非常恶心的大模拟
快速排序拯救世界的题
------------------------------------
看体面,什么w,e,d,c真多,然而事实上,我们只要用一个结构体存下编号和w,然后按照题意
模拟,最后加上e就行了
读懂题面是这道题的最大难点
--------------------------------------
1 #include<iostream> 2 #include<algorithm> 3 #include<cstdio> 4 using namespace std; 5 const int maxn=20001; 6 int n,k; 7 int e[20]; 8 int w[20001]; 9 struct peo{ 10 int num; 11 int v; 12 }w1[maxn]; 13 bool cmp(peo x,peo y){ 14 if(x.v==y.v) 15 return x.num<y.num; 16 else 17 return x.v>y.v; 18 } 19 int main(){ 20 scanf("%d%d",&n,&k); 21 for(int i=1;i<=10;++i){ 22 scanf("%d",&e[i]); 23 } 24 for(int i=1;i<=n;++i){ 25 scanf("%d",&w[i]); 26 w1[i].num=i; 27 w1[i].v=w[i]; 28 } 29 sort(w1+1,w1+n+1,cmp); 30 for(int i=1;i<=n;++i){ 31 w1[i].v+=e[(i-1)%10+1]; 32 } 33 sort(w1+1,w1+n+1,cmp); 34 for(int i=1;i<=k;++i) 35 cout<<w1[i].num<<" "; 36 return 0; 37 }