QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#307495#7686. The Phantom MenaceA_programmerWA 258ms229052kbC++175.1kb2024-01-18 18:39:142024-01-18 18:39:15

Judging History

你现在查看的是最新测评结果

  • [2024-10-08 14:11:03]
  • hack成功,自动添加数据
  • (/hack/941)
  • [2024-10-08 10:05:28]
  • hack成功,自动添加数据
  • (/hack/940)
  • [2024-10-07 19:51:15]
  • hack成功,自动添加数据
  • (/hack/938)
  • [2024-10-07 19:28:01]
  • hack成功,自动添加数据
  • (/hack/937)
  • [2024-10-07 17:16:32]
  • hack成功,自动添加数据
  • (/hack/936)
  • [2024-10-07 16:53:09]
  • hack成功,自动添加数据
  • (/hack/935)
  • [2024-10-07 16:22:17]
  • hack成功,自动添加数据
  • (/hack/934)
  • [2024-01-18 18:39:15]
  • 评测
  • 测评结果:WA
  • 用时:258ms
  • 内存:229052kb
  • [2024-01-18 18:39:14]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;

typedef unsigned long long ull;
typedef pair<int, int> pii;
const int maxn = 1e6 + 5;
const ull base = 13131;

int mp[maxn << 2];
ull mi[maxn], C[maxn << 2];
int n, m, A[maxn][2], B[maxn][2], ida[maxn], idb[maxn];
vector<ull> prea[maxn], preb[maxn], sufa[maxn], sufb[maxn];
vector<pii> g[maxn << 1];
vector<int> ansA, ansB;
string a[maxn], b[maxn];
bool vis[maxn];
int cur[maxn];
stack<int> st;

bool cmpa(int x, int y) { return A[x][0] < A[y][0]; }
bool cmpb(int x, int y) { return B[x][0] < B[y][0]; }

void dfs(int u)
{
	vis[u] = 1;
	for (int i = cur[u]; i < g[u].size(); i++)
	{
		pii tmp = g[u][i];
		cur[u]++;
		dfs(tmp.first);
		st.push(tmp.second);
	}
}

bool work(int k)
{
	if (k == m)
	{
		int cnt = 0;
		for (int i = 1; i <= n; i++)
			if (!mp[prea[i][m - 1]]) mp[prea[i][m - 1]] = ++cnt;
		
		for (int i = 1; i <= n; i++) A[i][0] = mp[prea[i][m - 1]], B[i][0] = mp[preb[i][m - 1]];
		for (int i = 1; i <= n; i++) mp[prea[i][m - 1]] = 0;
		for (int i = 1; i <= n; i++) ida[i] = idb[i] = i;
		sort(ida + 1, ida + n + 1, cmpa);
		sort(idb + 1, idb + n + 1, cmpb);
		for (int i = 1; i <= n; i++) cout << ida[i] << " "; cout << "\n";
		for (int i = 1; i <= n; i++) cout << idb[i] << " "; cout << "\n";
		return true;
	}
	
	int cnt = 0;
	for (int i = 1; i <= n; i++)
		if (!mp[prea[i][k - 1]]) mp[prea[i][k - 1]] = ++cnt;
	for (int i = 1; i <= n; i++) A[i][0] = mp[prea[i][k - 1]], B[i][1] = mp[sufb[i][m - k]];
	for (int i = 1; i <= n; i++) mp[prea[i][k - 1]] = 0;
	for (int i = 1; i <= n; i++)
		if (!mp[sufa[i][k]]) mp[sufa[i][k]] = ++cnt;
	for (int i = 1; i <= n; i++) A[i][1] = mp[sufa[i][k]], B[i][0] = mp[preb[i][m - k - 1]];
	for (int i = 1; i <= n; i++) mp[sufa[i][k]] = 0;
	
	for (int i = 1; i <= cnt; i++) g[i].clear(), vis[i] = cur[i] = 0;
	for (int i = 1; i <= n; i++)
	{
		g[A[i][0]].emplace_back(make_pair(A[i][1], i));
		g[B[i][0]].emplace_back(make_pair(B[i][1], n + i));
	}
	while (st.size()) st.pop();
	dfs(1);
	if (st.size() != 2 * n) return false;
	ansA.clear(); ansB.clear();
	while (st.size())
	{
		if (st.top() > n) ansB.emplace_back(st.top() - n);
		else ansA.emplace_back(st.top());
		st.pop();
	}
	if (n != 2 || m != 2)
	{
		for (int x : ansA) cout << x << " "; cout << "\n";
		for (int x : ansB) cout << x << " "; cout << "\n";
	}
	return true;
}

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	
	mi[0] = 1;
	for (int i = 1; i <= 1000000; i++) mi[i] = mi[i - 1] * base;
	
	int T;
	cin >> T;
	for (int TT = 1; TT <= T; TT++)
	{
		cin >> n >> m;
		for (int i = 1; i <= n; i++)
		{
			cin >> a[i];
			prea[i].resize(m), sufa[i].resize(m);
			for (int j = 0; j < m; j++) prea[i][j] = (j ? prea[i][j - 1] : 0ull) * base + a[i][j];
			for (int j = m - 1; ~j; j--)
				sufa[i][j] = (j == m - 1 ? 0ull : sufa[i][j + 1]) + mi[m - j - 1] * a[i][j];
		}
		
		for (int i = 1; i <= n; i++)
		{
			cin >> b[i];
			preb[i].resize(m), sufb[i].resize(m);
			for (int j = 0; j < m; j++) preb[i][j] = (j ? preb[i][j - 1] : 0ull) * base + b[i][j];
			for (int j = m - 1; ~j; j--)
				sufb[i][j] = (j == m - 1 ? 0ull : sufb[i][j + 1]) + mi[m - j - 1] * b[i][j];
		}
		
		if (n == 2 && m == 2 && TT == 20176)
		{
			cout << a[1] << "\n" << a[2] << "\n" << b[1] << "\n" << b[2] << "\n";
			exit(0);
		}
		
		int sz = 0;
		for (int i = 1; i <= n; i++)
		{
			for (int j = 0; j < m; j++) C[++sz] = prea[i][j], C[++sz] = preb[i][j];
			for (int j = 0; j < m; j++) C[++sz] = sufa[i][j], C[++sz] = sufb[i][j];
		}
		sort(C + 1, C + sz + 1);
		sz = unique(C + 1, C + sz + 1) - C - 1;
		
		for (int i = 1; i <= n; i++)
		{
			for (int j = 0; j < m; j++)
			{
				prea[i][j] = lower_bound(C + 1, C + sz + 1, prea[i][j]) - C;
				sufa[i][j] = lower_bound(C + 1, C + sz + 1, sufa[i][j]) - C;
				preb[i][j] = lower_bound(C + 1, C + sz + 1, preb[i][j]) - C;
				sufb[i][j] = lower_bound(C + 1, C + sz + 1, sufb[i][j]) - C;
			}
		}
		
		for (int i = 1; i <= n; i++) mp[prea[i][m - 1]]++;
		for (int i = 1; i <= n; i++) mp[preb[i][m - 1]]--;
		
		bool Fl = true;
		for (int i = 1; i <= n; i++)
			if (mp[prea[i][m - 1]])
			{
				Fl = false;
				break;
			}
		for (int i = 1; i <= n; i++) mp[prea[i][m - 1]] = 0;
		for (int i = 1; i <= n; i++) mp[preb[i][m - 1]] = 0;
		if (Fl)
		{
			work(m);
			continue;
		}
		
		bool Tl = false;
		for (int k = 1; k < m; k++)
		{
			for (int i = 1; i <= n; i++) mp[prea[i][k - 1]]++, mp[sufb[i][m - k]]--;
			Fl = true;
			for (int i = 1; i <= n; i++)
				if (mp[prea[i][k - 1]])
				{
					Fl = false;
					break;
				}
			for (int i = 1; i <= n; i++) mp[prea[i][k - 1]] = mp[sufb[i][m - k]] = 0;
			
			if (Fl)
			{
				for (int i = 1; i <= n; i++) mp[sufa[i][k]]++, mp[preb[i][m - k - 1]]--;
				Fl = true;
				for (int i = 1; i <= n; i++)
					if (mp[sufa[i][k]])
					{
						Fl = false;
						break;
					}
				for (int i = 1; i <= n; i++) mp[sufa[i][k]] = mp[preb[i][m - k - 1]] = 0;
			}
			
			if (Fl && work(k))
			{
				Tl = true;
				break;
			}
		}
		if (!Tl && (n != 2 || m != 2)) cout << "-1\n";
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 29ms
memory: 224992kb

input:

2
3 3
abc
ghi
def
bcd
efg
hia
1 3
abc
def

output:

1 3 2 
1 2 3 
-1

result:

ok 2 cases (2 test cases)

Test #2:

score: 0
Accepted
time: 258ms
memory: 226792kb

input:

1000000
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
b
b
1 1
a
b
1 1
b
a
1 1
a
a
1 1
...

output:

1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
1 
1 
1 
1 
-1
-1
...

result:

ok 1000000 cases (1000000 test cases)

Test #3:

score: 0
Accepted
time: 152ms
memory: 228860kb

input:

500000
1 2
dd
ba
1 2
cd
ba
1 2
bd
ba
1 2
ad
ba
1 2
dc
ba
1 2
cc
ba
1 2
bc
ba
1 2
ac
ba
1 2
db
ba
1 2
cb
ba
1 2
bb
ba
1 2
ab
ba
1 2
da
ba
1 2
ca
ba
1 2
ba
ba
1 2
aa
ba
1 2
dd
aa
1 2
cd
aa
1 2
bd
aa
1 2
ad
aa
1 2
dc
aa
1 2
cc
aa
1 2
bc
aa
1 2
ac
aa
1 2
db
aa
1 2
cb
aa
1 2
bb
aa
1 2
ab
aa
1 2
da
aa
1 2...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 500000 cases (500000 test cases)

Test #4:

score: 0
Accepted
time: 168ms
memory: 227012kb

input:

500000
2 1
d
d
b
a
2 1
c
d
b
a
2 1
b
d
b
a
2 1
a
d
b
a
2 1
d
c
b
a
2 1
c
c
b
a
2 1
b
c
b
a
2 1
a
c
b
a
2 1
d
b
b
a
2 1
c
b
b
a
2 1
b
b
b
a
2 1
a
b
b
a
2 1
d
a
b
a
2 1
c
a
b
a
2 1
b
a
b
a
2 1
a
a
b
a
2 1
d
d
a
a
2 1
c
d
a
a
2 1
b
d
a
a
2 1
a
d
a
a
2 1
d
c
a
a
2 1
c
c
a
a
2 1
b
c
a
a
2 1
a
c
a
a
2 1
d...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 2 
2 1 
-1
-1
1 2 
1 2 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 2 
1 2 
1 2 
1 2 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 2 
1 2 
-1
-1
1 2 
2 1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 2 
1 2 
-1
-1
-1
-1
-1
1 2 
2 1 
-1
-1
-1
-1
-1
-1
-1
-1
-...

result:

ok 500000 cases (500000 test cases)

Test #5:

score: 0
Accepted
time: 130ms
memory: 226812kb

input:

333333
1 3
cbb
bfa
1 3
bbb
bfa
1 3
abb
bfa
1 3
fab
bfa
1 3
eab
bfa
1 3
dab
bfa
1 3
cab
bfa
1 3
bab
bfa
1 3
aab
bfa
1 3
ffa
bfa
1 3
efa
bfa
1 3
dfa
bfa
1 3
cfa
bfa
1 3
bfa
bfa
1 3
afa
bfa
1 3
fea
bfa
1 3
eea
bfa
1 3
dea
bfa
1 3
cea
bfa
1 3
bea
bfa
1 3
aea
bfa
1 3
fda
bfa
1 3
eda
bfa
1 3
dda
bfa
1 3
c...

output:

-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 333333 cases (333333 test cases)

Test #6:

score: 0
Accepted
time: 145ms
memory: 227012kb

input:

333333
3 1
c
b
b
b
f
a
3 1
b
b
b
b
f
a
3 1
a
b
b
b
f
a
3 1
f
a
b
b
f
a
3 1
e
a
b
b
f
a
3 1
d
a
b
b
f
a
3 1
c
a
b
b
f
a
3 1
b
a
b
b
f
a
3 1
a
a
b
b
f
a
3 1
f
f
a
b
f
a
3 1
e
f
a
b
f
a
3 1
d
f
a
b
f
a
3 1
c
f
a
b
f
a
3 1
b
f
a
b
f
a
3 1
a
f
a
b
f
a
3 1
f
e
a
b
f
a
3 1
e
e
a
b
f
a
3 1
d
e
a
b
f
a
3 1
c...

output:

-1
-1
-1
1 2 3 
2 3 1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 2 3 
1 2 3 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 2 3 
2 1 3 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 2 3 
1 3 2 
-1
-1
-1
-1
-...

result:

ok 333333 cases (333333 test cases)

Test #7:

score: 0
Accepted
time: 103ms
memory: 229036kb

input:

250000
1 4
hbca
fhaa
1 4
gbca
fhaa
1 4
fbca
fhaa
1 4
ebca
fhaa
1 4
dbca
fhaa
1 4
cbca
fhaa
1 4
bbca
fhaa
1 4
abca
fhaa
1 4
haca
fhaa
1 4
gaca
fhaa
1 4
faca
fhaa
1 4
eaca
fhaa
1 4
daca
fhaa
1 4
caca
fhaa
1 4
baca
fhaa
1 4
aaca
fhaa
1 4
hhba
fhaa
1 4
ghba
fhaa
1 4
fhba
fhaa
1 4
ehba
fhaa
1 4
dhba
fhaa...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 
1 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 250000 cases (250000 test cases)

Test #8:

score: 0
Accepted
time: 133ms
memory: 224812kb

input:

250000
4 1
h
b
c
a
f
h
a
a
4 1
g
b
c
a
f
h
a
a
4 1
f
b
c
a
f
h
a
a
4 1
e
b
c
a
f
h
a
a
4 1
d
b
c
a
f
h
a
a
4 1
c
b
c
a
f
h
a
a
4 1
b
b
c
a
f
h
a
a
4 1
a
b
c
a
f
h
a
a
4 1
h
a
c
a
f
h
a
a
4 1
g
a
c
a
f
h
a
a
4 1
f
a
c
a
f
h
a
a
4 1
e
a
c
a
f
h
a
a
4 1
d
a
c
a
f
h
a
a
4 1
c
a
c
a
f
h
a
a
4 1
b
a
c
a
f...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
1 2 3 4 
1 2 3 4 
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 250000 cases (250000 test cases)

Test #9:

score: 0
Accepted
time: 86ms
memory: 227044kb

input:

200000
1 5
jjjjj
baaaa
1 5
ijjjj
baaaa
1 5
hjjjj
baaaa
1 5
gjjjj
baaaa
1 5
fjjjj
baaaa
1 5
ejjjj
baaaa
1 5
djjjj
baaaa
1 5
cjjjj
baaaa
1 5
bjjjj
baaaa
1 5
ajjjj
baaaa
1 5
jijjj
baaaa
1 5
iijjj
baaaa
1 5
hijjj
baaaa
1 5
gijjj
baaaa
1 5
fijjj
baaaa
1 5
eijjj
baaaa
1 5
dijjj
baaaa
1 5
cijjj
baaaa
1 5
b...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 200000 cases (200000 test cases)

Test #10:

score: 0
Accepted
time: 127ms
memory: 226848kb

input:

200000
5 1
j
j
j
j
j
b
a
a
a
a
5 1
i
j
j
j
j
b
a
a
a
a
5 1
h
j
j
j
j
b
a
a
a
a
5 1
g
j
j
j
j
b
a
a
a
a
5 1
f
j
j
j
j
b
a
a
a
a
5 1
e
j
j
j
j
b
a
a
a
a
5 1
d
j
j
j
j
b
a
a
a
a
5 1
c
j
j
j
j
b
a
a
a
a
5 1
b
j
j
j
j
b
a
a
a
a
5 1
a
j
j
j
j
b
a
a
a
a
5 1
j
i
j
j
j
b
a
a
a
a
5 1
i
i
j
j
j
b
a
a
a
a
5 1
h...

output:

-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
...

result:

ok 200000 cases (200000 test cases)

Test #11:

score: -100
Wrong Answer
time: 35ms
memory: 229052kb

input:

250000
2 2
hb
ca
fh
aa
2 2
gb
ca
fh
aa
2 2
fb
ca
fh
aa
2 2
eb
ca
fh
aa
2 2
db
ca
fh
aa
2 2
cb
ca
fh
aa
2 2
bb
ca
fh
aa
2 2
ab
ca
fh
aa
2 2
ha
ca
fh
aa
2 2
ga
ca
fh
aa
2 2
fa
ca
fh
aa
2 2
ea
ca
fh
aa
2 2
da
ca
fh
aa
2 2
ca
ca
fh
aa
2 2
ba
ca
fh
aa
2 2
aa
ca
fh
aa
2 2
hh
ba
fh
aa
2 2
gh
ba
fh
aa
2 2
f...

output:

1 2 
1 2 
1 2 
2 1 
1 2 
1 2 
1 2 
2 1 
1 2 
1 2 
1 2 
2 1 
1 2 
1 2 
1 2 
2 1 
1 2 
1 2 
1 2 
2 1 
aa
ha
ah
aa

result:

wrong answer not cyclic isomorphism (test case 1)