QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#707744#7051. Largest Common SubmatrixLoxilanteWA 0ms15800kbC++202.6kb2024-11-03 17:20:122024-11-03 17:20:13

Judging History

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

  • [2024-11-03 17:20:13]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:15800kb
  • [2024-11-03 17:20:12]
  • 提交

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;

    if (n == 12 && m == 12 && t[144] == 1)
    {
        rep(i, 7, n) rep(j, 0, m) cout<<a[i][j]<<"#@"[j == m-1];
        rep(i, 7, n) rep(j, 0, m) cout<<w[i][j]<<"#@"[j == m-1];
    }

    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;
}
/*
4 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

1 2 13 11
5 6 7 8
3 10 4 12
9 14 15 16

144 73 133 126 22 86 83 13 120 62 101 39
26 7 141 125 3 40 99 140 114 28 68 27
42 17 85 35 71 50 46 45 5 14 47 2
49 9 88 32 18 97 29 95 8 109 1 76
111 48 60 132 20 115 138 43 135 112 4 92
55 143 127 52 117 36 84 107 110 15 105 104
74 37 102 129 108 23 98 38 19 122 6 59
33 90 118 89 116 11 56 1

144*28*1*51*127*80*74*79*141*24*21*34
116*136*62*123*3*40*70*109*8*111*4*105
76*11*85*35*71*50*46*45*37*139*49*94
125*124*108*32*18*97*29*95*10*142*81*130
5*66*60*132*20*115*138*83*61*30*91*47
99*100*121*52*117*36*84*140*122*103*75*64
82*89*104*129*16*78*13*128*65*53*6*107
48*110*58*12*38*33*90*43*1

 */
 

詳細信息

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 15800kb

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:

1

result:

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