QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#706763#8332. Two in OneAnnelieseWA 0ms3792kbC++141.7kb2024-11-03 13:21:102024-11-03 13:21:10

Judging History

你现在查看的是最新测评结果

  • [2024-11-03 13:21:10]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3792kb
  • [2024-11-03 13:21:10]
  • 提交

answer

#include<bits/stdc++.h>

using namespace std;
using LL = long long;
using ll = long long;
const int N = 100005;
#define rep(i,a ,b )  for(int i = a ;i<=b;i++)
#define pre(i,a ,b )  for(int i = a ;i>=b;i--)
#define pb push_back
#define sc(x) scanf("%d",&x)

const int mod=1e9+9;
ll hz[25];
ll get(ll x,ll y){
	ll res=0;
	pre(i,20,0){
		int u=0,v=0;
		if((x&(1<<i))){
			u=1;
		}
		if((y&(1<<i))){
			v=1;
		}
		if(!u&&!v)continue;
		//cout<<i<<" "<<u<<" "<<v<<endl;
		if(u==v){
			res|=hz[i];
			return res;
		}
		else{
			res|=(1<<i);
		}
	}
	return res;
}
int cnt[N];
void solve() {
	int n;
	sc(n);
	rep(i,1,n)cnt[i]=0;vector<int>p[25];
	rep(i,1,n){
		int x;sc(x);cnt[x]++;
	}
	rep(i,1,n){
		int nw=0;if(!cnt[i])continue;
		int x=cnt[i];
		rep(j,0,20){
			if(((1<<j)&x)){
				nw=j;
			}
		}
		p[nw].pb(x);
	}
	ll res=0;
	pre(i,20,0){
		if(p[i].size()==0)continue;
		if(p[i].size()>1){
			res=hz[i];
			break;
		}
		else{
			int fg=0,ne=0;
		//	cout<<p[1].size()<<" "<<i<<endl;
			pre(j,i-1,0){
				if(p[j].size()>0){
					fg=1;ne=j;break;
				}
			}
			//cout<<ne<<" "<<p[ne].size()<<" "<<fg<<endl;
			if(!fg){//不存在其他数 
				res=p[i][0];
				break;
				//printf("%lld\n",p[i][0]);
			}
			else{
				rep(j,0,p[ne].size()-1){
				//	cout<<p[ne][j]<<" "<<p[i][0]<<endl;
					res=max(res,get(p[i][0],p[ne][j]));
				}
			}
			break;
		}
	}
	printf("%lld\n",res);
}


int main() {

    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    hz[0]=1;
	rep(i,1,20){
		hz[i]=(hz[i-1]|(1<<i));
	}
    int t = 1;
    cin >> t ;

    while (t--) {
        solve();
    }

    return 0;


}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3792kb

input:

1
7
1 2 3 4 3 2 1

output:

0

result:

wrong answer 1st numbers differ - expected: '3', found: '0'