Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- unsigned long long int bin_search(int A, int B, unsigned long long int K, unsigned long long int M, unsigned long long X){
- unsigned long long left = 0, right = (2 * X) / (A + B) + 1;
- unsigned long long int tree_amount1, tree_amount2;
- unsigned long long int mid;
- while(left + 1 < right){
- mid = (left + right) / 2;
- tree_amount1 = A * (K - 1) * (mid / K) + A * (mid % K);
- tree_amount2 = B * (M - 1) * (mid / M) + B * (mid % M);
- if (tree_amount1 + tree_amount2 >= X)
- right = mid;
- else
- left = mid;
- }
- return right;
- }
- int main (){
- FILE *inFile = fopen("forest.in", "r");
- FILE *outFile = fopen("forest.out", "w");
- int A, B;
- unsigned long long K, M, X;
- fscanf(inFile, "%d%llu%d%llu%llu", &A, &K, &B, &M, &X);
- fprintf(outFile, "%llu", bin_search(A, B, K, M, X));
- fclose(inFile);
- fclose(outFile);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment