QOJ.ac
QOJ
The 2nd Universal Cup Finals is coming! Check out our event page, schedule, and competition rules!
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#744315 | #5414. Stop, Yesterday Please No More | Yoimiya | AC ✓ | 131ms | 19052kb | C++20 | 2.7kb | 2024-11-13 21:30:27 | 2024-11-13 21:30:28 |
Judging History
answer
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
using ll = long long;
typedef pair<ll, ll> PII;
const ll N = 1e3 + 5;
const ll INF = 1e18;
map <char, PII> mp = { {'L', {0, -1}}, {'R', {0, 1}}, {'U', {-1, 0}}, {'D', {1, 0}} };
ll tree[N][N];
ll n, m, k;
typedef struct INFO {
PII ss, ee;
bool operator<(const INFO &other) const {
return (ss == other.ss ? ee < other.ee : ss < other.ss);
}
}info;
void add(ll x, ll y, ll z) {
ll memo_y = y;
while (x <= n) {
y = memo_y;
while (y <= m)
tree[x][y] += z, y += y & -y;
x += x & -x;
}
}
void range_add(ll xa, ll ya, ll xb, ll yb, ll z) {
add(xa, ya, z);
add(xa, yb + 1, -z);
add(xb + 1, ya, -z);
add(xb + 1, yb + 1, z);
}
ll ask(ll x, ll y) {
ll res = 0, memo_y = y;
while (x) {
y = memo_y;
while (y)
res += tree[x][y], y -= y & -y;
x -= x & -x;
}
return res;
}
void solve() {
cin >> n >> m >> k;
for (ll i = 0; i <= n + 1; i++){
for (ll j = 0; j <= m + 1; j++)
tree[i][j] = 0;
}
string s; cin >> s;
ll l = s.length();
s = ' ' + s;
ll sx = 1, sy = 1, ex = n, ey = m;
ll xx = 0, yy = 0;
for (ll i = 1; i <= l; i++) {
if (s[i] == 'L') {
yy--; sy = max(sy, 1 - yy);
}
else if (s[i] == 'R') {
yy++; ey = min(ey, m - yy);
}
else if (s[i] == 'U') {
xx--; sx = max(sx, 1 - xx);
}
else if (s[i] == 'D') {
xx++; ex = min(ex, n - xx);
}
}
if (sx > ex || sy > ey) {
if (k == 0) cout << n * m << endl;
else cout << 0 << endl;
return;
}
k = (ex - sx + 1) * (ey - sy + 1) - k;
set <info> st;
st.insert({{sx, sy}, {ex, ey}});
// cout << sx << ' ' << sy << ' ' << ex << ' ' << ey << endl;
for (ll i = 1; i <= l; i++) {
sx += mp[s[i]].first, sy += mp[s[i]].second;
ex += mp[s[i]].first, ey += mp[s[i]].second;
// cout << sx << ' ' << sy << ' ' << ex << ' ' << ey << endl;
st.insert({{sx, sy}, {ex, ey}});
}
for (auto i: st){
// printf("%d %d %d %d\n", i.ss.first, i.ss.second, i.ee.first, i.ee.second);
range_add(i.ss.first, i.ss.second, i.ee.first, i.ee.second, 1);
}
ll ans = 0;
for (ll i = 1; i <= n; i++){
for (ll j = 1; j <= m; j++){
if (ask(i, j) == k) ans++;
}
}
cout << ans << endl;
// cout << sx << ' ' << sy << ' ' << ex << ' ' << ey << endl;
// cout << "----------\n";
}
signed main() {
ios::sync_with_stdio(0), cin.tie(0);
ll t; cin >> t;
while (t--) solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3612kb
input:
3 4 5 3 ULDDRR 4 5 0 UUUUUUU 4 5 10 UUUUUUU
output:
2 20 0
result:
ok 3 number(s): "2 20 0"
Test #2:
score: 0
Accepted
time: 11ms
memory: 4032kb
input:
1060 19 12 0 UDLDDUUUUDDDLLRDUDUURULUUUDRDUDRDRLRLRLULULLLDLDDRLUUUURUUUDDRLLRUUUDULURUULLRDRLRDDURDUUURRRLURLRUULRRUDURDLUUURDLURDDLUUURDDRLLURRDLRUDLRDRLLRRDRDDLDRURRRLUDULLLRUUDLRRURRDLLRRRDLLRDDDLRLRURURDDDL 11 1 0 UR 3 18 33 UDRLR 17 11 132 RLDRDLDRUU 6 10 13 UULUDDLRDLUUDLDD 1 15 0 D 6 20 50 D...
output:
228 11 20 99 18 15 34 240 15 0 0 13 14 18 26 16 1 19 108 8 2 2 3 7 0 30 16 21 0 8 10 9 15 5 320 11 7 3 0 0 12 0 11 0 0 14 0 22 36 51 23 7 6 4 2 48 28 8 63 22 49 13 10 4 108 10 18 44 0 15 9 0 4 30 14 99 105 10 14 17 0 66 10 11 28 52 34 56 33 14 56 90 14 0 121 3 48 30 36 13 0 30 7 8 3 11 16 45 20 34 0...
result:
ok 1060 numbers
Test #3:
score: 0
Accepted
time: 16ms
memory: 11444kb
input:
1 1000 1000 979065 DDUULULUDULLULLDLUULURRLDURLRDLRRUURUUUDLRLUUDUUDUDLLDDDULU
output:
958416
result:
ok 1 number(s): "958416"
Test #4:
score: 0
Accepted
time: 16ms
memory: 11372kb
input:
1 1000 1000 943471 LRLDLURLDLRDRDUULULRDDLLRURDUURLLDDLDLDDLLLUUURLDRUDRLLUUUUUDLUUDLURURRDLRLRRRLULRRULURLRRDLDRLUDRRLDDLUDRRLLUDLLLRDULRRRRLDUUDRDLULUUUUDRRDULUDLLUUDLDURDRRLRRLDRLDDRURURLUULRRLDLLRLRDRRUULDLDLULLDLLRULLRUULURDURRLUUDUULLULDLRUDDLRLRLLUDDDLLLUDRRLDDULRRURRDURDDRDLLULRLULURLRDLLURD...
output:
889224
result:
ok 1 number(s): "889224"
Test #5:
score: 0
Accepted
time: 131ms
memory: 19052kb
input:
1 1000 1000 315808 LLRURURRDDDULLDDUDRDLRLLLDDDLUDRDURLDULRLRULUUDLUULUUDULLLLDDURLDUULUUDLLDLLDRUDUULRLLRLRUURLRLULLDDLLDUDLLRUUDRLDLUULDLLDRRRURDULLDRRRDURURDRLDURURUDLURLDURRLRRUDUDURDRLRRRDLRRURLURUDRRLDLRULLDLUURDURLURLLRDLRDRUURURDRUDUUUDLRRLUDLUUDUDDRRDUULUUDDRLLULDUUDRURRDRLULRLULDURLURUDLLD...
output:
426
result:
ok 1 number(s): "426"
Test #6:
score: 0
Accepted
time: 16ms
memory: 11400kb
input:
1 1000 1000 986018 LLULDRRRDDURRUDRUURRRDDLUUDUULRULRDULLD
output:
972180
result:
ok 1 number(s): "972180"
Test #7:
score: 0
Accepted
time: 16ms
memory: 11440kb
input:
1 1000 1000 945431 DDRRURUUDLDULLDLDDLRULDLLDDRRLUDRLUURRLDRDLURUURRRRLRURLURULLLDRDDDRRRLDLDRLRDDUURRURDDDLRUURLUURLRDUDDDLLDUURLDLUDLLRRDUUDRLUULLUULDLURRUDLUURLRLRURDUDRRRDRLRUDLLLLURLULRLRLRRDDUDLRLDUUUULUDLLURRLURRDLRURRRULDDLLLRLRDLUDLLDDRULDUULRDDUUDDUDLURDULLDUDDLULRULDRLDDULDULLUDLULUDRURRR...
output:
893000
result:
ok 1 number(s): "893000"
Test #8:
score: 0
Accepted
time: 111ms
memory: 15160kb
input:
1 1000 1000 460035 RDDUURDULDDLDDLDDLDRRULLRLUURLURRRDRUDDDRDLDLDULUDLRLLRRLRRURRRDLRLUDRDURULDRRDDDDDDLRLDULUULDUDRLLUUUURUUDRURLRRULDRDRUUUUULULRURDDRLRULLLRDRRULUDDUDDLLLRDRUULUUDDRLURDLDURRDLRRLDRRUDLUULRDLURULLDLRLLDDURDUDLDULDLLRULRDLRLUULLUDRUDDDLRRDULULLRUURLUURRLLLLRLDRURLLRLDRRDDDRLUUUUDUL...
output:
417
result:
ok 1 number(s): "417"
Test #9:
score: 0
Accepted
time: 16ms
memory: 11456kb
input:
1 1000 1000 992010 LLLLLDLDRRLUDRR
output:
1999
result:
ok 1 number(s): "1999"
Test #10:
score: 0
Accepted
time: 20ms
memory: 11484kb
input:
1 1000 1000 919600 LLDLRUDRLURRUDRDRRDLRUDLRRRUUULDLDURDDDRUURRRLLURULDRLRLULLULDRULULRLRRRURLDDDRUUULUDLLLLRRLLRDDRDULUDLRLRLDRLUDUDURRULUULLDULUULDLLDRDULUDLDULDDUULDDRRURDRDULRRLDRRDUURURRLUUUDRRLDRRDDLULRDDLDLLRLRLLLRULUUUURRRLDLRUDRRLRURDRLDULLLUDRULLDLDRRUUDLRRLLRLDDLUDLRLRRURUUDUULUDURDURRLUU...
output:
944
result:
ok 1 number(s): "944"
Test #11:
score: 0
Accepted
time: 97ms
memory: 13008kb
input:
1 1000 1000 804351 DLRLDLLLLUDRDURRLDDRRLRUULURURDDDRDLRUDDULRRLLULURDRUUDRURRLURRRDRURRDRLULRDLRRDRRDDUDLUDLDULRUURRLRUUDRLDDRDDUUDULUULUUUDLRURULLRDUUDDDRRLDRUDDUUDRURLRDRUDLRLDDRRLLRLRDUDDULLULRLLDDUDDDUULDULLRRULULDUUULUDRRDRLUDLRRDDUDLRRDDLDLDRUULRRRRRLRLULLRDDRDDDULDRRURUDDLURLRLURLRDRULUDULUU...
output:
640000
result:
ok 1 number(s): "640000"