QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#707651#7051. Largest Common SubmatrixLoxilanteWA 2ms17960kbC++201.9kb2024-11-03 16:54:012024-11-03 16:54:02

Judging History

This is the latest submission verdict.

  • [2024-11-03 16:54:02]
  • Judged
  • Verdict: WA
  • Time: 2ms
  • Memory: 17960kb
  • [2024-11-03 16:54:01]
  • Submitted

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 = 1.5e3;
int a[U][U], w[U][U], c[U][U], l[U][U], r[U][U], u[U][U], t[U*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 n, m;
    cin>>n>>m;
    rep(i, 0, n) rep(j, 0, m) cin>>a[i][j];
    rep(i, 0, n) rep(j, 0, m) cin>>w[i][j], l[i][j] = r[i][j] = j, u[i][j] = 1;

    rep(i, 0, n) rep(j, 0, m) c[i][j] = a[i][j] == w[i][j];

    // rep(i, 0, n) rep(j, 0, m) w[i][j] = t[w[i][j]];    

    // int col = 0;
    // rep(i, 0, n) rep(j, 0, m)
    // {
    //     if (j && w[i][j] == w[i][j-1]+1) c[i][j] = c[i][j-1];
    //     else if (i && w[i][j] == w[i-1][j]+m) c[i][j] = c[i-1][j];
    //     else c[i][j] = ++col;
    // }

    rep(i, 0, n) rep(j, 1, m) if (c[i][j] == c[i][j-1]) l[i][j] = l[i][j-1];
    rep(i, 0, n) rev(j, m-2, 0) if (c[i][j] == c[i][j+1]) r[i][j] = r[i][j+1];

    int ans = 0;
    rep(i, 0, n) rep(j, 0, m)
    {
        if (i && c[i][j] && c[i-1][j])
        {
            l[i][j] = max(l[i][j], l[i-1][j]);
            r[i][j] = min(r[i][j], r[i-1][j]);
            u[i][j] = u[i-1][j]+1;
        }
        ans = max(ans, (r[i][j]-l[i][j]+1)*u[i][j]);
    }

    cout<<ans<<endl;

    // rep(i, 0, n) rep(j, 0, m) cout<<w[i][j]<<" \n"[j == m-1];
    // rep(i, 0, n) rep(j, 0, m) cout<<c[i][j]<<" \n"[j == m-1];

    return 0;
}
/*
3 4
5 6 7 8
1 2 3 4
9 10 11 12
5 6 8 7
1 2 4 3
12 11 10 9
 */

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 15832kb

input:

3 4
5 6 7 8
1 2 3 4
9 10 11 12
5 6 8 7
1 2 4 3
12 11 10 9

output:

4

result:

ok 1 number(s): "4"

Test #2:

score: 0
Accepted
time: 2ms
memory: 15904kb

input:

10 10
13 2 57 50 1 28 37 87 30 46
66 47 33 69 83 52 97 55 91 18
9 48 23 35 98 8 7 95 90 5
3 53 43 36 96 59 26 4 70 17
71 100 15 94 25 72 84 89 21 73
64 34 22 29 42 92 85 78 86 62
99 79 67 11 6 19 24 51 77 74
75 16 88 44 93 39 41 82 56 65
12 40 63 54 10 60 32 45 20 80
49 61 76 14 81 68 27 31 58 38
13...

output:

100

result:

ok 1 number(s): "100"

Test #3:

score: 0
Accepted
time: 0ms
memory: 17960kb

input:

10 10
6 48 98 83 7 56 22 49 61 34
8 87 91 100 16 17 86 24 9 23
94 50 81 59 51 21 52 20 33 25
73 1 70 45 36 31 88 90 12 69
64 57 60 5 85 29 37 96 92 41
89 67 79 84 35 68 46 18 38 63
27 55 65 95 11 43 47 72 80 66
75 39 58 62 77 53 15 40 3 71
32 82 10 99 44 2 30 76 74 28
19 78 13 97 26 42 54 14 4 93
6 ...

output:

80

result:

ok 1 number(s): "80"

Test #4:

score: 0
Accepted
time: 2ms
memory: 15860kb

input:

10 10
37 16 29 24 14 20 41 63 4 15
71 99 17 26 33 47 83 55 89 52
32 22 95 44 81 93 78 31 42 12
94 70 25 46 18 97 57 62 68 67
21 69 54 27 13 96 64 48 59 28
11 49 9 73 100 90 85 36 2 58
74 53 98 34 7 5 3 91 23 76
77 86 84 92 50 51 45 61 30 66
35 1 10 79 39 6 80 82 43 88
75 60 38 87 40 8 19 56 72 65
37...

output:

80

result:

ok 1 number(s): "80"

Test #5:

score: -100
Wrong Answer
time: 1ms
memory: 15896kb

input:

10 10
22 71 28 19 15 47 31 88 95 85
56 79 87 43 96 39 45 97 83 36
6 21 98 34 65 91 58 62 41 42
26 37 74 8 27 55 84 75 20 35
49 24 51 32 50 68 52 5 10 11
25 73 38 92 63 67 64 13 46 78
57 53 23 54 16 99 17 40 82 30
61 81 48 7 86 4 3 60 93 76
90 18 29 44 1 100 2 69 9 12
80 70 33 94 66 72 77 14 59 89
22...

output:

10

result:

wrong answer 1st numbers differ - expected: '24', found: '10'