結果
問題 | No.2895 Zero XOR Subset |
ユーザー |
![]() |
提出日時 | 2024-09-29 01:35:25 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 254 ms / 2,000 ms |
コード長 | 1,774 bytes |
コンパイル時間 | 4,131 ms |
コンパイル使用メモリ | 280,964 KB |
実行使用メモリ | 82,568 KB |
最終ジャッジ日時 | 2024-09-29 01:35:34 |
合計ジャッジ時間 | 8,730 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 35 |
ソースコード
#include <iostream>#include <bits/stdc++.h>using namespace std;#define endl "\n"#define i64 long longconst int N=2e5+10;void solved(){int n;cin>>n;//cout<<n<<endl;vector<vector<int>> a(100,vector<int>(n+3));vector<int> d(n+1);for(int i=1;i<=n;i++){i64 x;cin>>x;d[i]=x;for(int j=0;j<=59;j++){if((x>>j)&1) a[j+1][i]=1;}}//for(int j=0;j<=59;j++) a[n+1][j]=0;auto cluct=[&](int n){for(int i=1;i<=n;i++){int max=i;for(int j=i+1;j<=60;j++){if(fabs(a[j][i])>fabs(a[max][i])) max=j;}for(int j=1;j<=n+1;j++) {swap(a[max][j],a[i][j]);//swap(d[max],d[i]);}if(a[i][i]==0){vector<int> ans;for(int j=i;j>=1;j--){if(a[j][i]==1){ans.push_back(j);}}/*cout<<";;;"<<endl;for(int j=1;j<=n;j++){for(int i=1;i<=20;i++) cout<<a[i][j]<<" \n"[i==20];}*/ans.push_back(i);cout<<ans.size()<<endl;for(auto v:ans) cout<<v<<" ";//cout<<i<<endl;return ;}for(int j=1;j<=60;j++){if(j!=i){int temp=a[j][i]/a[i][i];for(int k=1;k<=n+1;k++) a[j][k]-=a[i][k]*temp,a[j][k]=(a[j][k]%2+2)%2;}}}cout<<"-1"<<endl;};if(n>=61) cluct(61);else cluct(n);}signed main(){//ios::sync_with_stdio(false);//cin.tie(0);//cout.tie(0);int t=1;//cin>>t;while(t--) solved();}