求hack
查看原帖
求hack
550957
Anonymely楼主2022/4/2 12:42

这个代码过掉了民间数据,但是官方数据被卡掉了

#include<bits/stdc++.h>
using namespace std;

#define N 1000005

struct node{
	int id,sum;
}e[N];

int n,t;

int ans1,ans2,flag=0,ans3;

int use[N],pe[N<<1],s[N];

bool cmp(node a,node b){
	return a.sum>b.sum;
}

int main(){
	cin>>t;
	while(t--){
		flag=0;
		int n;cin>>n;
		memset(e,0,sizeof(e));
		memset(s,0,sizeof(s));
		for(int i=1;i<=n;i++){
			cin>>e[i].sum;
			e[i].id=i;
			s[i]=s[i-1]+e[i].sum;
			use[i]=0;
			for(int j=1;j<=e[i].sum;j++){
				cin>>pe[s[i-1]+j];
			}
		}
		sort(e+1,e+n+1,cmp);
		//for(int i=1;i<=n;i++)cout<<e[i].id<<' '<<e[i].sum<<endl;
		for(int k=1;k<=n;k++){
			//cout<<e[k].id<<' '<<e[k].sum<<endl;
			int i=e[k].id;
			ans1=0,ans2=0;
			for(int j=1;j<=e[k].sum;j++){
				//cout<<i<<' '<<ans1<<' '<<ans2<<endl;
				int p=pe[s[i-1]+j];
				int v=use[p];
				use[p]=i;
				if(v==0)v=i;
				if(ans1==0)ans1=v;
				else if(ans1!=v)ans2=v;
				if(ans1&&ans2){
					e[k].sum=-114;
					ans3=k;
					flag=1;n=-1;
					break;
				}
			}
		}
		if(flag==0)cout<<"NO"<<endl;
		else{
			cout<<"YES"<<endl;
			//if(ans1==ans3||ans2==ans3);
			//else if(e[ans1].sum>e[ans2].sum)ans1=ans3;
			//else ans2=ans3;
			cout<<ans1<<' '<<ans2<<endl;
		}
	}
	return 0;
}
2022/4/2 12:42
加载中...