比赛 |
防止颓废的小练习v0.15 |
评测结果 |
RRRRRRRRRR |
题目名称 |
瑞士轮 |
最终得分 |
0 |
用户昵称 |
rewine |
运行时间 |
0.004 s |
代码语言 |
C++ |
内存使用 |
4.89 MiB |
提交时间 |
2016-10-17 16:23:07 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
struct data{
int f;
int s;
int b;
}a[200009];
bool comp(const data a,const data b)
{
if(a.f==b.f){
return a.b<b.b;
}
return a.f>b.f;
}
int n,t,r;
data a1[100009],a2[100009];
void msort()
{
int b1=1,b2=1,c=1;
while(b1<=n&&b2<=n)
{
if(a1[b1].f>a2[b2].f || (a1[b1].f==a2[b2].f&&a1[b1].b<a2[b2].b))
{
a[c]=a1[b1];
c++; b1++;
}
else{
a[c]=a2[b2];
c++; b2++;
}
}
while(b2<=n) {a[c]=a2[b2];c++;b2++;}
while(b1<=n) {a[c]=a1[b1];c++;b1++;}
}
int main()
{
freopen("swiss.in","r",stdin);
freopen("swiss.in","w",stdout);
ios::sync_with_stdio(false);
cin>>n>>r>>t;
for(int i=1;i<=n*2;i++)
cin>>a[i].f;
for(int i=1;i<=n*2;i++)
cin>>a[i].s;
for(int i=1;i<=n+n;i++)
a[i].b=i;
sort(a+1,a+n+n+1,comp);
for(int ii=1;ii<=r;ii++)
{
for(int i=1;i<=2*n;i+=2)
{
if(a[i].s>a[i+1].s)
{
a[i].f++;
a1[(i+1)>>1]=a[i];
a2[(i+1)>>1]=a[i+1];
}
else
{
a[i+1].f++;
a1[(i+1)>>1]=a[i+1];
a2[(i+1)>>1]=a[i];
}
}
msort();
}
cout<<a[t].b;
return 0;
}