33
44public class Main {
55 static int n , m ;
6- static int [][] bee , grow_info , diff ;
6+ static int [][] bee ;
7+ static int [] zero , one , two ;
78 static StringTokenizer st ;
89 static StringBuilder sb = new StringBuilder ();
910 static BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
1011 static BufferedWriter bw = new BufferedWriter (new OutputStreamWriter (System .out ));
1112 public static void main (String [] args ) throws Exception {
1213 pre_setting ();
13- for ( int i = 0 ; i < n ; i ++) grow ( i );
14-
14+ daily_grow ( );
15+
1516 for (int i = 0 ; i < m ; i ++) {
1617 for (int j = 0 ; j < m ; j ++) {
1718 sb .append (bee [i ][j ]).append (" " );
@@ -22,39 +23,27 @@ public static void main(String[] args) throws Exception{
2223 bw .close ();
2324 }
2425
25- static void grow ( int day ){
26- daily_setting ( day );
26+ static void daily_grow ( ){
27+ for ( int day = 0 ; day < n ; day ++) {
2728
28- for (int i = 1 ; i < m ; i ++){
29- for (int j = 1 ; j < m ; j ++){
30- diff [i ][j ] = Math .max (diff [i ][j - 1 ], Math .max (diff [i - 1 ][j - 1 ], diff [i - 1 ][j ]));
31- bee [i ][j ] += diff [i ][j ];
29+ for (int i = m - 1 ; 0 <= i ; i --) {
30+
31+ if (0 < zero [day ]--) bee [i ][0 ] += 0 ;
32+ else if (0 < one [day ]--) bee [i ][0 ] += 1 ;
33+ else if (0 < two [day ]--) bee [i ][0 ] += 2 ;
3234 }
33- }
34- }
3535
36- static void daily_setting (int day ){
37- for (int i = m - 1 ; 0 <= i ; i --) {
36+ for (int i = 1 ; i < m ; i ++) {
3837
39- for (int j = 0 ; j < 3 ; j ++) {
40- if (0 < grow_info [day ][j ]){
41- diff [i ][0 ] = j ;
42- bee [i ][0 ] += j ;
43- grow_info [day ][j ]--;
44- break ;
45- }
38+ if (0 < zero [day ]--) bee [0 ][i ] += 0 ;
39+ else if (0 < one [day ]--) bee [0 ][i ] += 1 ;
40+ else if (0 < two [day ]--) bee [0 ][i ] += 2 ;
4641 }
4742 }
4843
49- for (int i = 1 ; i < m ; i ++) {
50- for (int j = 0 ; j < 3 ; j ++) {
51- if (0 < grow_info [day ][j ]){
52- diff [0 ][i ] = j ;
53- bee [0 ][i ] += j ;
54- grow_info [day ][j ]--;
55- break ;
56-
57- }
44+ for (int i = 1 ; i < m ; i ++){
45+ for (int j = 1 ; j < m ; j ++){
46+ bee [i ][j ] += Math .max (bee [i ][j - 1 ], Math .max (bee [i - 1 ][j - 1 ], bee [i - 1 ][j ])) - 1 ;
5847 }
5948 }
6049 }
@@ -64,15 +53,18 @@ static void pre_setting() throws Exception{
6453 n = Integer .parseInt (st .nextToken ());
6554
6655 bee = new int [m ][m ];
67- diff = new int [m ][m ];
68- grow_info = new int [n ][3 ];
56+ zero = new int [n ];
57+ one = new int [n ];
58+ two = new int [n ];
6959
7060 for (int i = 0 ; i < m ; i ++) Arrays .fill (bee [i ], 1 );
7161
7262 for (int i = 0 ; i < n ; i ++){
7363 st = new StringTokenizer (br .readLine ());
7464
75- for (int j = 0 ; j < 3 ; j ++) grow_info [i ][j ] = Integer .parseInt (st .nextToken ());
65+ zero [i ] = Integer .parseInt (st .nextToken ());
66+ one [i ] = Integer .parseInt (st .nextToken ());
67+ two [i ] = Integer .parseInt (st .nextToken ());
7668 }
7769 }
7870}
0 commit comments