Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int Confronta(int a, int b);
- int Trova(int N, int G){
- int lo, lo2, hi, hi2;
- bool found = false;
- lo = 1, hi = N;
- while (lo <= hi) {
- int mid = (lo+hi) / 2;
- //printf("mid = %d\n", mid);
- lo2 = N+1;
- hi2 = 2*N;
- while (lo2 <= hi2) {
- int mid2 = (lo2+hi2) / 2;
- //printf("Confronto %d e %d = ", mid, mid2);
- bool c = Confronta(mid, mid2);
- //printf("%d\n", c);
- if (c == 0) {
- hi2 = mid2 - 1;
- }
- else {
- lo2 = mid2 + 1;
- }
- }
- int conto = (lo2 - N) + (mid - 1);
- if (conto < G) {
- lo = mid + 1;
- }
- else if (conto == G) {
- //printf("Risultato %d\n", mid);
- found = true;
- return mid;
- }
- else {
- hi = mid - 1;
- }
- }
- lo = N+1, hi = 2*N;
- while (lo <= hi) {
- int mid = (lo+hi) / 2;
- //printf("mid = %d\n", mid);
- lo2 = 1;
- hi2 = N;
- while (lo2 <= hi2) {
- int mid2 = (lo2+hi2) / 2;
- //printf("Confronto %d e %d = ", mid, mid2);
- bool c = Confronta(mid, mid2);
- //printf("%d\n", c);
- if (c == 0) {
- hi2 = mid2 - 1;
- }
- else {
- lo2 = mid2 + 1;
- }
- }
- int conto = (lo2 - N) + (mid - 1);
- if (conto < G) {
- lo = mid + 1;
- }
- else if (conto == G) {
- //printf("Risultato %d\n", mid);
- found = true;
- return mid;
- }
- else {
- hi = mid - 1;
- }
- }
- return lo;
- }
- //#include "grader.cpp"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement