比赛 |
防止isaac的小练习day1 |
评测结果 |
AAAAAAATTT |
题目名称 |
瑞士轮 |
最终得分 |
70 |
用户昵称 |
Lethur |
运行时间 |
3.594 s |
代码语言 |
C++ |
内存使用 |
3.75 MiB |
提交时间 |
2016-11-01 10:09:47 |
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define MAXN 100001
using namespace std;
int n,r,q;
struct Node
{
int ord;
int s;
int w;
}
N[MAXN],M1[MAXN],M2[MAXN];
bool cmp(const Node& a,const Node& b)
{
return (a.s==b.s)?(a.ord<b.ord):(a.s>b.s);
}
inline void solve()
{
int ai=1;
int bi=1;
for(int i=1;i<=2*n;i+=2)
{
if(N[i].w>N[i+1].w)
{
N[i].s++;
M1[ai++]=N[i];
M2[bi++]=N[i+1];
}
else
{
N[i+1].s++;
M1[ai++]=N[i+1];
M2[bi++]=N[i];
}
}
int i=1;
int j=1;
int k=1;
while(i<ai&&j<bi)
{
if(cmp(M1[i],M2[j]))
{
N[k++]=M1[i++];
}
else
{
N[k++]=M2[j++];
}
}
while(i<ai)
{
N[k++]=M1[i++];
}
while(j<bi)
{
N[k++]=M2[j++];
}
return ;
}
int main()
{
freopen("swiss.in","r",stdin);
freopen("swiss.out","w",stdout);
cin>>n>>r>>q;
for(int i=1;i<=2*n;i++)
{
cin>>N[i].s;
N[i].ord=i;
}
for(int i=1;i<=2*n;i++)
{
cin>>N[i].w;
}
sort(N+1,N+1+2*n,cmp);
for(int i=1;i<=r;i++)
{
solve();
}
cout<<N[q].ord<<endl;
return 0;
}