QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#534409 | #9114. Black or White 2 | Goldenglow1427 | RE | 0ms | 1620kb | C++17 | 1.9kb | 2024-08-27 09:23:42 | 2024-08-27 09:23:42 |
Judging History
answer
/*
ID: Victor Chen [mail_vi1]
PROG: QOJ 9114
LANG: C++
*/
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cassert>
using namespace std;
const int Maxn = 1500;
int T;
int n, m, k;
bool rev;
int mp[Maxn+10][Maxn+10];
void solve()
{
scanf("%d%d%d", &n, &m, &k);
if(k*2 > n*m)
k = n*m-k, rev = true;
else
rev = false;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
mp[i][j] = 0;
if(k == 1)
mp[1][1] = 1;
else if(k == 2)
mp[1][1] = mp[n][m] = 1;
else if(k >= 3)
{
int rep = k / 3, rem = k % 3;
int curi = -1, curj = 10000;
for(int i=1; i<=rep; i++)
{
curj += 2;
if(curj >= m)
curj = 1, curi += 2;
mp[curi][curj] = mp[curi+1][curj] = mp[curi][curj+1] = 1;
}
if(rem == 1)
mp[n][m] = 1;
else if(rem == 2)
{
if(n == 2)
mp[curi+1][curj+1] = mp[curi][curj+2] = 1;
else if(m == 2)
mp[curi+1][curj+1] = mp[curi+2][curj] = 1;
else
{
mp[n][m] = 1;
if(n == 3)
mp[1][m] = 1;
else
mp[n][1] = 1;
}
// assert(mp[n][m]+mp[n-1][m]+mp[n][m-1]+mp[n-1][m-1] != 2);
assert(mp[n][1]+mp[n][2]+mp[n-1][1]+mp[n-1][2] != 2);
}
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
if(rev == true)
printf("%d", 1-mp[i][j]);
else
printf("%d", mp[i][j]);
printf("\n");
}
}
int main()
{
scanf("%d", &T);
while(T != 0)
{
T--;
solve();
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 1620kb
input:
2 2 2 2 2 3 0
output:
10 01 000 000
result:
ok Output is valid. OK.
Test #2:
score: -100
Runtime Error
input:
27520 2 2 0 2 2 1 2 2 2 2 2 3 2 2 4 2 3 0 2 3 1 2 3 2 2 3 3 2 3 4 2 3 5 2 3 6 3 2 0 3 2 1 3 2 2 3 2 3 3 2 4 3 2 5 3 2 6 3 3 0 3 3 1 3 3 2 3 3 3 3 3 4 3 3 5 3 3 6 3 3 7 3 3 8 3 3 9 2 4 0 2 4 1 2 4 2 2 4 3 2 4 4 2 4 5 2 4 6 2 4 7 2 4 8 3 4 0 3 4 1 3 4 2 3 4 3 3 4 4 3 4 5 3 4 6 3 4 7 3 4 8 3 4 9 3 4 10...