P1309 瑞士轮
题解
1.这题可以模拟一下
2.sort吸氧可以过(可能是排序有点慢吧,不开会T)
sort排序时注意:
return 1 是满足条件,不交换
return 0是不满足,交换
代码(吸氧优化了一下QWQ)
// luogu-judger-enable-o2
#include<bits/stdc++.h> using namespace std; int n,r,q;
struct node
{
int s,num,w;
}peo[]; bool cmp(node x,node y)
{
if(x.s >y.s ) return ;
if(x.s <y.s ) return ;
if(x.s ==y.s )
{
if(x.num <y.num ) return ;
else return ;
} } int main()
{
scanf("%d%d%d",&n,&r,&q);
n=*n;
for(int i=;i<=n;i++)
{
scanf("%d",&peo[i].s );
peo[i].num =i;
}
for(int i=;i<=n;i++)
scanf("%d",&peo[i].w ); for(int k=;k<=r;k++)
{
sort(peo+,peo+n+,cmp);
for(int i=;i<=n;i+=)
{
if(peo[i].w <peo[i+].w ) peo[i+].s ++;
else peo[i].s ++;
} } sort(peo+,peo+n+,cmp); printf("%d",peo[q].num ); }