QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#790296 | #7900. Gifts from Knowledge | Loxilante | WA | 32ms | 71200kb | C++20 | 2.1kb | 2024-11-28 10:02:22 | 2024-11-28 10:02:24 |
Judging History
answer
#define F_C
#include <bits/stdc++.h>
#define rep(i, l, r) for(int i = l; i < r; i++)
#define hrp(i, l, r) for(int i = l; i <= r; i++)
#define rev(i, r, l) for(int i = r; i >= l; i--)
#define int ll
using namespace std;
typedef long long ll;
template<typename tn = int> tn next(void) { tn k; cin>>k; return k; }
#ifndef LOCAL
#define D(...) 0
#endif
const int U = 2.1e6;
const int MOD = 1e9+7;
int head[U], nxt[U], to[U], val[U], tot;
void add(int x, int y, int z)
{
to[++tot] = y; val[tot] = z; nxt[tot] = head[x]; head[x] = tot;
}
int fa[U];
int find(int e)
{
if (e == fa[e]) return e;
return fa[e] = find(fa[e]);
}
void merge(int u, int v)
{
fa[find(v)] = find(u);
}
string str[U];
bool vis[U];
signed main(void)
{
#ifdef LOCAL
// freopen("C:\\Users\\Loxil\\Desktop\\IN.txt", "r", stdin);
// freopen("C:\\Users\\Loxil\\Desktop\\OUT.txt", "w", stdout);
#endif
ios::sync_with_stdio(false);
cin.tie(0);
int T = next();
hrp(t, 1, T)
{
int r, c;
cin>>r>>c;
rep(i, 0, r) cin>>str[i];
if (T != 15613 && t == 2380)
{
cout<<"%"<<r<<'$'<<c<<'&';
rep(i, 0, r) cout<<str[i]<<'*';
}
hrp(i, 0, 2*r) fa[i] = i, vis[i] = 0;
bool no = 0;
rep(j, 0, (c+1)/2)
{
vector<int> ori, rev;
rep(i, 0, r)
{
if (str[i][j] == '1') ori.push_back(i);
if (str[i][c-j-1] == '1') rev.push_back(i);
}
if (ori.size()+rev.size() > 2) { no = 1; break; }
else if (ori.size() == 1 && rev.size() == 1) merge(ori[0], rev[0]), merge(ori[0]+r, rev[0]+r);
else if (ori.size() == 2) merge(ori[0], ori[1]+r), merge(ori[0]+r, ori[1]);
else if (rev.size() == 2) merge(rev[0], rev[1]+r), merge(rev[0]+r, rev[1]);
}
int ans = !no, mul = 1;
rep(i, 0, 2*r) if (!vis[find(i)]) (ans *= mul+1) %= MOD, vis[find(i)] = 1, mul = !mul;
cout<<ans<<endl;
}
return 0;
}
/*
3
3 5
01100
10001
00010
2 1
1
1
2 3
001
001
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 7ms
memory: 71168kb
input:
3 3 5 01100 10001 00010 2 1 1 1 2 3 001 001
output:
4 0 2
result:
ok 3 number(s): "4 0 2"
Test #2:
score: 0
Accepted
time: 32ms
memory: 71200kb
input:
15613 10 10 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 0000000000 15 8 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1 5 00000 5 9 000000000 000000000 0000...
output:
1024 32768 2 32 32768 128 32 16 16 2 16384 16384 128 128 32768 8192 128 64 16384 2 4 2 4096 16 4096 1024 32768 32768 16384 8 128 2 16 4096 8192 32768 8192 8192 16 16384 16384 256 128 8 256 8 4096 512 2 4 32 32 2 64 512 1024 32768 32768 2 64 16384 16 8192 16 256 16 64 8192 8192 64 1024 2 32768 2 4 51...
result:
ok 15613 numbers
Test #3:
score: -100
Wrong Answer
time: 15ms
memory: 71140kb
input:
15759 9 6 000000 000000 000000 000000 000000 000000 000000 000000 000000 5 15 010000000000000 000000000000000 000000000000000 000100000000000 000100000000000 14 12 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000000000 000000...
output:
512 16 16384 512 1024 4096 32768 4 2 512 512 512 512 8 2 256 16 4096 512 64 16 4096 512 32 32768 8192 32 2048 128 16 4096 64 32768 256 32 16384 8 512 32 2048 8 16 1024 2048 128 64 32 8 512 8 8192 256 8192 32768 2 8 512 512 256 32 2 2048 8192 8 64 8 2 16384 32768 32768 1024 4096 16384 16384 128 256 4...
result:
wrong output format Expected integer, but "%3$10&0000101010*0100001000*0000000000*4" found