QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#270691#5414. Stop, Yesterday Please No MoreFeet_McYeetWA 5ms7132kbC++202.8kb2023-12-01 11:29:062023-12-01 11:29:07

Judging History

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

  • [2023-12-01 11:29:07]
  • 评测
  • 测评结果:WA
  • 用时:5ms
  • 内存:7132kb
  • [2023-12-01 11:29:06]
  • 提交

answer

#include <iostream>
#include <cmath>
#include <string>
#include <vector>
#include <map>
#include <set>
#include <queue>
#include <array>
#include <iterator>
#include <algorithm>
// #include <bit>
#include <numeric>
#include <iomanip>
using namespace std;
#pragma GCC optimize ("Ofast")
#pragma GCC target ("avx2")
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<long long, long long> pll;
typedef pair<short, short> pss;
#define el << '\n'
#define nl cout << '\n'
#define cina(a,n) for (int i=0; i<n; i++) cin >> a[i]
#define spc << ' '
#define forn(i,n) for (int i=0; i<n; i++)
#define forl(i,s,e) for (int i=s; i<e; i++)
#define pb push_back
#define fi first
#define se second
#define MAX *max_element
#define MIN *min_element
#define rsz resize
#define sz(x) ((int) x.size())
#define all(x) x.begin(), x.end()
#define bsi(x, v) (int) (lower_bound(x.begin(), x.end(), v) - x.begin())
const int inf = 1000000000;
const ll inf2 = 4000000000000000000;

void smin(int& a, int b) {
    if (b<a) a=b;
}

void smax(int& a, int b) {
    if (b>a) a=b;
}

const int MAXN = 1005;
int n, m, k;
// set<pii> l;

int ps[MAXN*2][MAXN*2];
int a[MAXN*2][MAXN*2];

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int t; cin >> t;
    while (t--) {
        // l.clear();
        cin >> n >> m >> k;
        forn(i,2*n+2) forn(j,2*n+2) {
            a[i][j] = 0;
            ps[i][j] = 0;
        }
        string s; cin >> s;
        // l.insert({0,0});
        int sx=0, sy=0, lx=0, ly=0;
        int cx = 0, cy = 0;
        a[n][m]=1;
        for (char i : s) {
            if (i == 'U') cx++;
            else if (i == 'D') cx--;
            else if (i == 'L') cy++;
            else cy--;
            // l.insert({cx, cy});
            smin(sx, cx); smax(lx, cx);
            smin(sy, cy); smax(ly, cy);
            if (-n <= cx && cx <= n && -m <= cy && cy <= m) a[cx+n][cy+m]=1;
        }

        // forn(i,2*n) {
        //     forn(j,2*m) cout << a[i][j];
        //     nl;
        // }
        // nl;
        int ns = max(n+sx-lx,0)*max(m+ly-sy,0);
        if (ns == 0) {
            if (k == 0) cout << n*m el;
            else cout << 0 el;
            continue;
        }
        forn(i,2*n+1) forn(j,2*m+1) ps[i+1][j+1] = ps[i][j+1] + ps[i+1][j] - ps[i][j] + a[i+1][j+1];
        int tot = 0;
        forl(i,1,n+1) forl(j,1,m+1) {
            int xl = lx - i;
            int xr = n + sx - i; 
            int yl = ly - j;
            int yr = m + sy - j;
            int v = ps[xr+n][yr+m] - ps[xl+n][yr+m] - ps[xr+n][yl+m] + ps[xl+n][yl+m];
            if ((xr-xl)*(yr-yl) - v == k) {
                tot++;
                // cout << i spc << j el;
            }
        } 
        cout << tot el;
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 5548kb

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: -100
Wrong Answer
time: 5ms
memory: 7132kb

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
0
15
0
0
13
14
18
26
16
1
19
108
8
2
1
3
7
0
30
16
21
0
8
10
0
15
5
2
11
7
3
0
0
12
0
11
0
0
14
0
22
36
51
23
7
6
4
2
0
0
8
63
22
49
13
10
4
108
10
18
44
0
15
9
0
0
30
14
99
105
10
14
17
0
0
10
11
28
52
34
56
33
14
56
0
14
0
121
3
48
19
36
13
0
0
7
8
3
11
16
45
20
34
0
38
0
20
...

result:

wrong answer 8th numbers differ - expected: '240', found: '0'