2227 The Wedding Juicer

「2227 The Wedding Juicer」の編集履歴(バックアップ)一覧はこちら

2227 The Wedding Juicer」(2006/05/14 (日) 00:30:33) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

**2227 The Wedding Juicer **解答例 import java.util.*; public class Main { static final int MAX = 1000000000; public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int w = sc.nextInt(); int h = sc.nextInt(); int[][] b = new int[h+2][w+2]; int[][] l = new int[h+2][w+2]; for(int i=1;i<=h;i++){ for(int j=1;j<=w;j++){ b[i][j] = sc.nextInt(); } } for(int i=1;i<=h;i++){ for(int j=1;j<=w;j++){ l[i][j] = MAX; } } while(true){ boolean end = true; for(int i=1;i<=h;i++){ for(int j=1;j<=w;j++){ if(l[i][j]>b[i][j]){ if(l[i][j]>l[i-1][j]){ l[i][j] = Math.max(l[i-1][j], b[i][j]); end = false; } if(l[i][j]>l[i+1][j]){ l[i][j] = Math.max(l[i+1][j], b[i][j]); end = false; } if(l[i][j]>l[i][j-1]){ l[i][j] = Math.max(l[i][j-1], b[i][j]); end = false; } if(l[i][j]>l[i][j+1]){ l[i][j] = Math.max(l[i][j+1], b[i][j]); end = false; } } } } if(end) break; for(int j=w;j>=1;j--){ for(int i=h;i>=1;i--){ if(l[i][j]>b[i][j]){ if(l[i][j]>l[i-1][j]){ l[i][j] = Math.max(l[i-1][j], b[i][j]); end = false; } if(l[i][j]>l[i+1][j]){ l[i][j] = Math.max(l[i+1][j], b[i][j]); end = false; } if(l[i][j]>l[i][j-1]){ l[i][j] = Math.max(l[i][j-1], b[i][j]); end = false; } if(l[i][j]>l[i][j+1]){ l[i][j] = Math.max(l[i][j+1], b[i][j]); end = false; } } } } if(end) break; } long sum = 0; for(int i=1;i<=h;i++){ for(int j=1;j<=w;j++){ sum += l[i][j] - b[i][j]; } } System.out.println(sum); } }

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。