제출 #366244

#제출 시각아이디문제언어결과실행 시간메모리
366244dapigRabbit Carrot (LMIO19_triusis)Java
100 / 100
293 ms17872 KiB
//package lis; import java.io.*; import java.util.*; class triusis { public static void main(String[] args) throws IOException { triusis obj = new triusis(); obj.doStuff(); } boolean check(int val, int m) { long v1 = nums[lis[m]]; long v2 = nums[val]; v2 -= (val-lis[m])*inc; return (v1 >= v2); } int bs(int val) { int l = 0, r = count; while (l < r) { int m = (l+r)/2; if (check(val, m)) { if (lis[m+1]==-1) return m; if (!check(val, m+1)) return m; l = m+1; } else r = m; } if (l==0) return (check(val, 0)) ? 0 : -1; return l; } int[] lis; int count = 0; void lis() { lis = new int[nums.length+1]; Arrays.fill(lis, -1); lis[0] = 0; for (int i = 1; i < nums.length; i++) { int pos = bs(i)+1; if (pos==0) continue; if (pos > count) count = pos; lis[pos] = i; } } long[] nums; long inc; private void doStuff() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); nums = new long[Integer.parseInt(st.nextToken())+1]; inc = Integer.parseInt(st.nextToken()); for (int i = 1; i < nums.length; i++) { nums[i] = Integer.parseInt(br.readLine()); } br.close(); lis(); System.out.println(nums.length-1-count); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...