QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#529333 | #6399. Classic: Classical Problem | solar_express# | WA | 1ms | 3704kb | C++20 | 2.1kb | 2024-08-24 12:08:16 | 2024-08-24 12:08:18 |
Judging History
answer
#include<bits/stdc++.h>
#define N 100005
using namespace std;
int T,n,p,a[N];
int id[N],invid[N];
int vis[N];
int gen(){
for(int i=2;i<p;++i){
for(int j=0;j<p;++j) vis[j]=0;
int val=1;
bool fl=0;
for(int j=1;j<p;++j){
if(vis[val]){
fl=1;
break;
}
vis[val]=1;
val=1ll*val*i%p;
}
if(fl==0) return i;
}
}
bitset<200000> b,ans,c;
int main(){
// ios::sync_with_stdio(0);
// cin.tie(0);
cin>>T;
while(T--){
cin>>n>>p;
int g=gen();
// cerr<<"g:"<<p<<" "<<g<<endl;
int val=1;
for(int i=1;i<=p-1;++i){
id[val]=i;
invid[i]=val;
val=1ll*val*g%p;
}
bool fl=0;
for(int i=1;i<=n;++i){
cin>>a[i];
if(a[i]==0) fl=1;
}
if(fl==0){
cout<<"1 1\n";
cout<<"0\n";
continue;
}
b.reset();
for(int i=1;i<=n;++i) if(a[i]!=0) b.set(2*(p-1)-id[a[i]]);
for(int i=1;i<p;++i) ans.set(i);
fl=0;
for(int i=1;i<p;++i){
c=(b>>((p-1)-id[i]))|(b>>(2*(p-1)-id[a[i]]));
if((c&ans).count()){
ans=c&ans;
}else{
// cout<<"ans ";
cout<<ans.count()<<" "<<i<<'\n';
vector<int> a;
a.clear();
for(int j=1;j<p;++j)
if(ans[j])
a.push_back(invid[p-1-j+1]);
sort(a.begin(),a.end());
for(auto val:a) cout<<val<<" ";
cout<<'\n';
fl=1;
break;
}
}
if(fl==0){
cout<<ans.count()<<" "<<p<<'\n';
vector<int> a;
a.clear();
for(int j=1;j<p;++j)
if(ans[j])
a.push_back(invid[p-1-j+1]);
sort(a.begin(),a.end());
for(auto val:a) cout<<val<<" ";
cout<<'\n';
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3620kb
input:
3 2 3 0 2 3 5 2 3 4 3 5 0 2 3
output:
1 2 2 1 1 0 2 2 2 3
result:
ok 6 lines
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3704kb
input:
3 1 2 0 1 2 1 2 2 1 0
output:
1 1 1 1 1 0 1 2 1
result:
wrong answer 1st lines differ - expected: '2 1', found: '1 1'