제출 #1122274

#제출 시각아이디문제언어결과실행 시간메모리
1122274secretwood01Self Study (JOI22_ho_t2)Java
100 / 100
404 ms43420 KiB
import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); PrintWriter pw = new PrintWriter(System.out); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); long M = Long.parseLong(st.nextToken()); long [] a, b; a = new long[N]; b = new long[N]; st = new StringTokenizer(br.readLine()); StringTokenizer st1 = new StringTokenizer(br.readLine()); for (int i=0;i<N;i++) { a[i] = Long.parseLong(st.nextToken()); b[i] = Long.parseLong(st1.nextToken()); } pw.println(bs(a, b, N, M)); pw.close(); br.close(); } public static boolean f(long [] a, long [] b, int N, long M, long mid) { long ans = 0; for (int i=0;i<N;i++) { if (a[i]>b[i]) { long nC = mid/a[i]; if (mid%a[i]>0) nC++; //long nC = Math.min(M, 1); nC = Math.min(nC, M); ans+=nC; long remain = Math.max(mid-nC*a[i], 0); long toAdd = remain/b[i]; if (remain%b[i]>0) toAdd++; ans+=toAdd; } else { long toAdd = mid/b[i]; if (mid%b[i]>0) toAdd++; ans+=toAdd; } if (ans>M*N) return false; } return ans<=M*N; } public static long bs(long [] a, long [] b, int N, long M) { long ans = 0; long lo = 0; long hi = (long)1e18; while (lo<=hi) { long mid = (lo+hi)/2; if (f(a, b, N, M, mid)) { ans = mid; lo = mid+1; } else { hi = mid-1; } } return 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...