QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#821698 | #8307. Club Assignment | Brno (Bocheng Jiang, Zhenyu Wang, Taixiang Wang)# | WA | 0ms | 3692kb | C++20 | 1.5kb | 2024-12-19 17:26:46 | 2024-12-19 17:26:48 |
Judging History
answer
#include<bits/stdc++.h>
#define pii pair<int,int>
#define fi first
#define se second
#define mkp make_pair
using namespace std;
const int maxn=1e5+100,lim=2e9;
pii p[maxn];
int a[maxn],id[maxn],c[maxn];
int n;
int check(int k) {
for (int l=1,r;l<=n;l=r+1) {
r=l;
while (r+1<=n&&(a[r+1]>>k)==(a[l]>>k)) r++;
if (r-l+1>=3) return -1;
}
return 1;
}
int ans=lim;
void calc(int k) {
for (int l=1,r;l<=n;l=r+1) {
r=l;
while (r+1<=n&&(a[r+1]>>k)==(a[l]>>k)) r++;
int len=r-l+1,ret=-1;
for (int S=0;S<(1<<len);S++) {
int tmp=lim;
for (int i=0;i<len;i++) {
if (S>>i&1) continue;
for (int j=i+1;j<len;j++) {
if (S>>j&1) continue;
tmp=min(tmp,a[l+i]^a[l+j]);
}
}
for (int i=0;i<len;i++) {
if (S>>i&1) ;
else continue;
for (int j=i+1;j<len;j++) {
if (S>>j&1) ;
else continue;
tmp=min(tmp,a[l+i]^a[l+j]);
}
}
if (tmp>ret) {
ret=tmp;
for (int i=0;i<len;i++) {
c[l+i]=1+(S>>i&1);
}
}
}
ans=min(ans,ret);
}
}
int main() {
int T;
cin>>T;
while (T--) {
cin>>n;
for (int i=1;i<=n;i++) {
cin>>p[i].fi;
p[i].se=i;
}
sort(p+1,p+n+1);
for (int i=1;i<=n;i++) {
a[i]=p[i].fi;
id[p[i].se]=i;
}
int k=30;
while (k>=0&&check(k)==-1) k--;
if (k==-1) {
cout<<"0\n";
for (int i=1;i<=n;i++) {
cout<<1;
}
cout<<'\n';
} else {
k++;
cout<<(1<<k)<<"\n";
calc(k);
cout<<ans<<'\n';
for (int i=1;i<=n;i++) {
cout<<c[id[i]];
}
}
ans=lim;
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3692kb
input:
2 3 1 2 3 3 5 5 5
output:
4 3 2210 111
result:
wrong answer Line "3" doesn't correspond to pattern "[1-2]{1,100000}"