結果
| 問題 |
No.1377 Half xor Half
|
| コンテスト | |
| ユーザー |
pockyny
|
| 提出日時 | 2021-02-07 17:50:06 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,911 bytes |
| コンパイル時間 | 716 ms |
| コンパイル使用メモリ | 74,324 KB |
| 最終ジャッジ日時 | 2025-01-18 13:48:56 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 1 |
| other | AC * 19 WA * 27 |
ソースコード
#include <iostream>
#include <string>
#include <vector>
#include <utility>
using namespace std;
pair<int,int> p[1010],q[1010];
void ope(int x,int j){
if(x==0) p[j].first ^= p[j].second;
else p[j].second ^= p[j].first;
}
vector<int> ans;
void solve(int x,int n){
ans.push_back(x);
if(x<=n){
for(int i=0;i<n;i++) ope((i<x),i);
}else{
x -= n;
for(int i=0;i<n;i++) ope((i>x - n),i);
}
}
int main(){
int i,j,n; cin >> n;
string s,t; cin >> s >> t;
for(i=0;i<n;i++){
p[i].first = s[i] - '0'; p[i].second = s[i + n] - '0';
q[i].first = t[i] - '0'; q[i].second = t[i + n] - '0';
}
/*for(i=0;i<n;i++) cout << p[i].first << p[i].second << endl;
cout << endl;
for(i=0;i<n;i++) cout << q[i].first << q[i].second << endl;*/
for(i=0;i<n;i++){
int x = p[i].first*2 + p[i].second,y = q[i].first*2 + q[i].second;
if(x==0 && y!=0){
cout << -1 << endl;
return 0;
}
if(x!=0 && y==0){
cout << -1 << endl;
return 0;
}
}
for(i=0;i<n;i++){
int x = p[i].first*2 + p[i].second,y = q[i].first*2 + q[i].second;
if(x==y) continue;
if((x^y)==0){
if(x==1){//1-2
solve(0,n); solve(n + i,n);
}
if(x==2){//2-1
solve(n,n); solve(i,n);
}
}else{
if(x==1){//1-3
solve(n,n); solve(i,n);
}
if(x==2){//2-3
solve(0,n); solve(n + i,n);
}
if(x==3){
if(y==1){//3-1
solve(0,n); solve(n + i,n);
}
if(y==2){//3-2
solve(n,n); solve(i,n);
}
}
}
}
cout << ans.size() << endl;
for(i=0;i<ans.size();i++) cout << ans[i] << endl;
}
pockyny