Hatena::Grouptopcoder

tochukasoの日記

 | 

2014-06-15

ARC025

| 22:27

B問題すら解けなかったのは問題だ・・・・・

ただのシミュレーションなのになぁ

縦横の累積和すらうまく取れないとか。

オワコン過ぎる。

簡単な問題をひたすら解くべし。

    void solve() throws Throwable {
        startTime = System.currentTimeMillis();
        
        int a = readBufInt();
        int b = readBufInt();
        
        int[][] choko = new int[a][];
        for (int i = 0; i < a; i++) {
            choko[i] = readIntArray();
        }

        int max = 0;

        for (int i = 0; i < a; i++) {
            for (int j = 0; j < b; j++) {
                int[] dp = new int[b + 1];
                for (int k = 0; k + i < a; k++) {
                    int line = 0; 
                    for (int l = 0; l + j < b; l++) {
                        boolean isEven = (i + k + j + l) % 2 == 0;
                        int now = choko[i + k ][j + l];
                        now = isEven ? now : -now;
                        line += now; 
                        dp[l] = dp[l] + line ;
                        if (dp[l] == 0) {
                            max = Math.max(max, (k + 1) * (l + 1));
                        }
                    }
                }
            }
        }
        pw.println(max);
    }
 |