3 条题解

  • 1
    @ 2026-4-19 19:51:33

    From:庄力

    #include<bits/stdc++.h>
    #define ll long long
    const int N=1e6+10;
    const int INF=0x3f3f3f3f;
    const int MOD=1e9+7;
    using namespace std;
    int read(){int x=0,ans=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')ans=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+(c-'0');c=getchar();}return x*ans;}
    ll b,c,n,r,q,s[N],a[N],x[N],y[N],w[N];
    bool cmp(int x,int y){
    	if(s[x]==s[y])return x<y;
    	return s[x]>s[y];
    }
    int main(){
    	cin.tie(0),cout.tie(0);
    	cin>>n>>r>>q;
    	n*=2;
    	for(int i=1;i<=n;i++){
    		a[i]=i;
    		cin>>s[i];
    	}
    	for(int i=1;i<=n;i++)cin>>w[i];
    	sort(a+1,a+n+1,cmp);
    	for(int i=1;i<=r;i++){
    		b=0;
    		for(int j=1;j<=n;j+=2){
    			if(w[a[j]]>w[a[j+1]]){
    				s[a[j]]++;
    				x[++b]=a[j];
    				y[b]=a[j+1];
    			}
    			else{
    				s[a[j+1]]++;
    				x[++b]=a[j+1];
    				y[b]=a[j];
    			}
    		}
    		ll l=1,j=1,k=1;
    		while(l<=b && j<=b){
    			if(cmp(x[l],y[j]))a[k++]=x[l++];
    			else a[k++]=y[j++];
    		}
    		while(l<=b)a[k++]=x[l++];
    		while(j<=b)a[k++]=y[j++];
    	}
    	cout<<a[q];
    }
    
    
    

    信息

    ID
    716
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    递交数
    28
    已通过
    6
    上传者