Submission #1131279


Source Code Expand

#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <utility>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
#include <istream>
#include <ostream>

#include <cstdlib>
#include <cmath>
#include <cstdio>

using namespace std;

#define fi first
#define se second
#define mkp make_pair
#define all(x) (x).begin(), (x).end()
#define pb push_back
#define rep(i,n) for(ll i=0; i < (n); ++i)
#define rrep(i,n) for(ll i=((n)-1); i >= 0; --i)

#define OPLT(T) bool operator<(const T & lop_, const T & rop_)
#define OPEQ(T) bool operator==(const T & lop_, const T & rop_)

typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

istream& operator>>(istream& istr, __float128& obj) { double d; istr >> d; obj = d; return istr; };
ostream& operator<<(ostream& ostr, __float128& obj) { ostr << static_cast<double>(obj); return ostr; };

int use[1<<10];

int main() {
	int N;
	cin >> N;
	vector<string> s(N);
	rep(i,N) cin >> s[i];
	if(N > 3) return 0;
	int a = 0;
	rep(i,N) {
		rep(j,N) {
			a *= 2;
			a += s[i][j] == '#';
		}
	}
	rep(i,1<<10) use[i] = -1;
	queue<int> q;
	q.push(a);
	use[a] = 0;
	while(q.size()) {
		a = q.front(); 
		int c[4][4];
		rep(i,N) {
			rep(j,N) {
				c[N-1-i][N-1-j] = a&1;
				a /= 2;
			}
		}
		a = q.front(); q.pop();

		rep(i,N) {
			rep(j,N) {
				int d[4][4];
				rep(k,N) {
					rep(l,N) {
						d[k][l] = c[k][l];
					}
				}
				rep(k,N) {
					d[k][j] = c[i][k];
				}
				int b = 0;
				rep(k,N) {
					rep(l,N) {
						b *= 2;
						b += d[k][l];
					}
				}
				if(use[b]+1) continue;
				use[b] = use[a]+1;
				q.push(b);
//				cout << a << " " << use[a] << " " << b << " " << use[b] << endl;
			}
		}
	}
	cout << use[(1<<(N*N))-1] << endl;
//	rep(i,(1<<(N*N))) cout << use[i] << " ";cout << endl;
	return 0;
}

Submission Info

Submission Time
Task B - Row to Column
User konjo
Language C++14 (GCC 5.4.1)
Score 300
Code Size 1928 Byte
Status WA
Exec Time 10 ms
Memory 512 KB

Judge Result

Set Name Sample Subtask All
Score / Max Score 0 / 0 300 / 300 0 / 1000
Status
AC × 5
AC × 20
AC × 20
WA × 23
Set Name Test Cases
Sample 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt
Subtask 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt
All 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 2_00.txt, 2_01.txt, 2_02.txt, 2_03.txt, 2_04.txt, 2_05.txt, 2_06.txt, 2_07.txt, 2_08.txt, 2_09.txt, 2_10.txt, 2_11.txt, 2_12.txt, 2_13.txt, 2_14.txt, 2_15.txt, 2_16.txt, 2_17.txt, 2_18.txt, 2_19.txt, 2_20.txt, 2_21.txt, 2_22.txt
Case Name Status Exec Time Memory
0_00.txt AC 1 ms 256 KB
0_01.txt AC 1 ms 256 KB
0_02.txt AC 1 ms 256 KB
0_03.txt AC 1 ms 256 KB
0_04.txt AC 1 ms 256 KB
1_00.txt AC 1 ms 256 KB
1_01.txt AC 1 ms 256 KB
1_02.txt AC 1 ms 256 KB
1_03.txt AC 1 ms 256 KB
1_04.txt AC 1 ms 256 KB
1_05.txt AC 1 ms 256 KB
1_06.txt AC 1 ms 256 KB
1_07.txt AC 1 ms 256 KB
1_08.txt AC 1 ms 256 KB
1_09.txt AC 1 ms 256 KB
1_10.txt AC 1 ms 256 KB
1_11.txt AC 1 ms 256 KB
1_12.txt AC 1 ms 256 KB
1_13.txt AC 1 ms 256 KB
1_14.txt AC 1 ms 256 KB
2_00.txt WA 9 ms 512 KB
2_01.txt WA 9 ms 512 KB
2_02.txt WA 10 ms 512 KB
2_03.txt WA 9 ms 512 KB
2_04.txt WA 9 ms 512 KB
2_05.txt WA 9 ms 512 KB
2_06.txt WA 9 ms 512 KB
2_07.txt WA 7 ms 512 KB
2_08.txt WA 9 ms 512 KB
2_09.txt WA 9 ms 512 KB
2_10.txt WA 9 ms 512 KB
2_11.txt WA 9 ms 512 KB
2_12.txt WA 9 ms 512 KB
2_13.txt WA 8 ms 512 KB
2_14.txt WA 8 ms 512 KB
2_15.txt WA 8 ms 512 KB
2_16.txt WA 8 ms 512 KB
2_17.txt WA 7 ms 512 KB
2_18.txt WA 6 ms 512 KB
2_19.txt WA 9 ms 512 KB
2_20.txt WA 7 ms 512 KB
2_21.txt WA 6 ms 512 KB
2_22.txt WA 9 ms 512 KB