1 条题解
-
0
C++ :
#include<iostream> #include<algorithm> using namespace std; const int N = 100005; struct person{ int id,score,power; }; person a[2*N],win[N],lose[N]; bool comp(const person &x,const person &y){ if (x.score!=y.score) return x.score>y.score; return x.id<y.id; } void swiss(int n){ int i,j,k; for (k=i=j=1; k<=n; k++) if (a[2*k-1].power>a[2*k].power) a[2*k-1].score++,win[i++]=a[2*k-1],lose[j++]=a[2*k]; else a[2*k].score++,win[i++]=a[2*k],lose[j++]=a[2*k-1]; for (k=i=j=1; i<=n&&j<=n; k++) if (comp(win[i],lose[j])) a[k]=win[i++]; else a[k]=lose[j++]; while (i<=n) a[k++]=win[i++]; while (j<=n) a[k++]=lose[j++]; } int main(){ int n,r,q; cin>>n>>r>>q; for (int i=1; i<=2*n; i++){ cin>>a[i].score; a[i].id=i; } for (int i=1; i<=2*n; i++) cin>>a[i].power; sort(a+1,a+2*n+1,comp); for (int i=1; i<=r; i++) swiss(n); cout<<a[q].id<<endl; return 0; }
- 1
信息
- ID
- 1042
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者