QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#499476 | #6723. Grid with Arrows | Ink_bai | RE | 0ms | 4456kb | C++20 | 2.0kb | 2024-07-31 14:44:52 | 2024-07-31 14:44:52 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
int updiv(int a, int b)
{
return a / b + (a % b ? 1 : 0);
}
int main()
{
int T;
cin >> T;
while (T--)
{
char s[100005];
int a[100005] = {0};
int b[100005] = {0};
int n, m;
cin >> n >> m;
for (int i = 1; i <= n * m; i++)
{
char c;
cin >> c;
s[i] = c;
}
for(int i = 1; i <= n * m; i++)
{
int x;
cin >> x;
if(s[i] == 'u'&& i - m * x >= 1)
{
a[i - m * x]++;
b[i]++;
}
else if(s[i] == 'd'&& i + m * x <= n * m)
{
a[i + m * x]++;
b[i]++;
}
else if(s[i] == 'l'&& updiv(i, m) == updiv(i - x, m))
{
a[i - x]++;
b[i]++;
}
else if(s[i] == 'r'&& updiv(i, m) == updiv(i + x, m))
{
a[i + x]++;
b[i]++;
}
}
int u = 0, v = 0;
bool flag = false;
for(int i = 1; i <= n * m; i++)
{
if(flag||u > 1||v > 1)
{
flag = true;
break;
}
else if(a[i] == b[i]&& b[i] == 0)
{
flag = true;
break;
}
else if(a[i] - b[i] == 1)
{
u++;
}
else if(b[i] - a[i] == 1)
{
v++;
}
else if(a[i] == b[i])
{
continue;
}
else
{
flag = true;
}
}
if(u > 1||v > 1)
{
flag = true;
}
if(flag)
{
cout << "No" << endl;
}
else
{
cout << "Yes" << endl;
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 4456kb
input:
2 2 3 rdd url 2 1 1 1 1 2 2 2 rr rr 1 1 1 1
output:
Yes No
result:
ok 2 token(s): yes count is 1, no count is 1
Test #2:
score: -100
Runtime Error
input:
1109 5 8 rddddldl drruludl rrldrurd urrrlluu uurrulrl 4 4 1 2 4 3 1 6 1 3 5 1 1 1 3 6 2 4 1 1 2 1 1 1 2 3 4 2 4 3 3 3 4 1 1 2 2 5 1 5 7 9 rdrddrdll urrdruldl ruullrulu drrlrlddl rrrdddlll ruulururl ruurrlluu 7 1 1 1 2 1 2 3 6 1 7 3 1 3 1 2 1 8 2 2 1 2 4 3 1 2 2 2 2 4 1 1 5 3 3 1 3 4 6 1 2 1 2 7 7 6 ...
output:
Yes Yes No No Yes No Yes Yes Yes Yes No Yes No Yes Yes No