제출 #385757

#제출 시각아이디문제언어결과실행 시간메모리
385757dapigCalvinball championship (CEOI15_teams)Java
10 / 100
1091 ms65536 KiB
//package week4; import java.io.*; import java.util.*; class teams { public static void main(String[] args) throws IOException { teams obj = new teams(); obj.doStuff(); } int process(int pos, int val, int max) { if (val == 1) return 0; if (pos == vals.length-1) return val-1; int[][] grid = new int[vals.length-pos-1][vals.length-pos+1]; grid[0][1] = val-1; grid[0][0] = max*(val-1)%1000007; grid[0][0] = (grid[0][0]+grid[0][1])%1000007; for (int i = 1; i < grid.length; i++) { for (int j = i+1; j > 0; j--) { grid[i][j] = grid[i-1][j-1]; grid[i][j] += grid[i][j+1]; grid[i][j] %= 1000007; } grid[i][0] = grid[i-1][0]; grid[i][0] += grid[i][1]; grid[i][0] %= 1000007; } return grid[grid.length-1][0]; } int[][] grid; // [pos] [number of valid ways if at cur pos and max val is #] int[] vals; private void doStuff() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int len = Integer.parseInt(br.readLine()); StringTokenizer st = new StringTokenizer(br.readLine()); vals = new int[len]; for (int i = 0; i < vals.length; i++) { vals[i] = Integer.parseInt(st.nextToken()); } br.close(); grid = new int[vals.length][vals.length+1]; Arrays.fill(grid[grid.length-1], 1); grid[grid.length-1][0] = 0; for (int i = 1; i < grid[0].length; i++) { grid[grid.length-1][i] += grid[grid.length-1][i-1]; } for (int i = grid.length-2; i >= 0; i--) { for (int j = 1; j <= i+1; j++) { grid[i][j] = (grid[i+1][j+1]+grid[i][j-1])%1000007; } } int ans = 1; int max = 1; int max2 = 1; for (int i = 0; i < vals.length; i++) { if (vals[i] > max) { max2 = max; max = vals[i]; } else if (vals[i] > max2) max2 = vals[i]; ans += process(i, vals[i], max2); ans %= 1000007; } System.out.println(ans); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...