Advertisement
Guest User

Untitled

a guest
Aug 6th, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int Confronta(int a, int b);
  4.  
  5. int Trova(int N, int G){
  6.     int lo, lo2, hi, hi2;
  7.  
  8.     bool found = false;
  9.     lo = 1, hi = N;
  10.     while (lo <= hi) {
  11.         int mid = (lo+hi) / 2;
  12.         //printf("mid = %d\n", mid);
  13.         lo2 = N+1;
  14.         hi2 = 2*N;
  15.         while (lo2 <= hi2) {
  16.             int mid2 = (lo2+hi2) / 2;
  17.             //printf("Confronto %d e %d = ", mid, mid2);
  18.             bool c = Confronta(mid, mid2);
  19.             //printf("%d\n", c);
  20.             if (c == 0) {
  21.                 hi2 = mid2 - 1;
  22.             }
  23.             else {
  24.                 lo2 = mid2 + 1;
  25.             }
  26.         }
  27.         int conto = (lo2 - N) + (mid - 1);
  28.         if (conto < G) {
  29.             lo = mid + 1;
  30.         }
  31.         else if (conto == G) {
  32.             //printf("Risultato %d\n", mid);
  33.             found = true;
  34.             return mid;
  35.         }
  36.         else {
  37.             hi = mid - 1;
  38.         }
  39.     }
  40.     lo = N+1, hi = 2*N;
  41.     while (lo <= hi) {
  42.         int mid = (lo+hi) / 2;
  43.  
  44.         //printf("mid = %d\n", mid);
  45.  
  46.         lo2 = 1;
  47.         hi2 = N;
  48.         while (lo2 <= hi2) {
  49.             int mid2 = (lo2+hi2) / 2;
  50.             //printf("Confronto %d e %d = ", mid, mid2);
  51.             bool c = Confronta(mid, mid2);
  52.             //printf("%d\n", c);
  53.             if (c == 0) {
  54.                 hi2 = mid2 - 1;
  55.             }
  56.             else {
  57.                 lo2 = mid2 + 1;
  58.             }
  59.         }
  60.         int conto = (lo2 - N) + (mid - 1);
  61.         if (conto < G) {
  62.             lo = mid + 1;
  63.         }
  64.         else if (conto == G) {
  65.             //printf("Risultato %d\n", mid);
  66.             found = true;
  67.             return mid;
  68.         }
  69.         else {
  70.             hi = mid - 1;
  71.         }
  72.     }
  73.  
  74.     return lo;
  75. }
  76.  
  77.  
  78. //#include "grader.cpp"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement