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("\n"); else printf(" "); } }
原文:https://www.cnblogs.com/Yinku/p/10317026.html