結果
問題 |
No.130 XOR Minimax
|
ユーザー |
|
提出日時 | 2016-11-19 07:28:54 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 729 bytes |
コンパイル時間 | 688 ms |
コンパイル使用メモリ | 64,268 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-26 11:02:49 |
合計ジャッジ時間 | 2,737 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 2 WA * 19 |
ソースコード
#include <iostream> #include <vector> #include <bitset> #include <algorithm> using namespace std; int main(){ int N;cin>>N; vector<int> v1(N); int a=0; for(int i=0;i<N;++i){ cin>>v1[i]; if(a<v1[i]) a=v1[i]; } bitset<33> bs1(a); int p=0; for(int i=32;i>=0;--i){ if(bs1.test(i)){ p=i; break; } } bitset<33> bs2=bs1; int c=a; while(1){ c=(int)bs2.to_ulong(); p-=1; vector<int> v2=v1; int b=0; for(int i=0;i<N;++i){ v2[i]^=c; if(b<v2[i]) b=v2[i]; } if(a>=b || p<0){ break; } else { bs1.flip(p); bs2=bs1; } } int ans=0; for(int i=0;i<N;++i){ v1[i]^=c; if(ans<v1[i]) ans=v1[i]; } cout<<ans<<endl; }