Advertisement
Guest User

Untitled

a guest
Feb 27th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1. #include <iostream>
  2. //Quick sort
  3. int quickSort(int arr[], int left, int right) {
  4.     int i = left, j = right;
  5.     int tmp;
  6.     int pivot = arr[(left + right) / 2];
  7.     /* partition */
  8.     while (i <= j) {
  9.         while (arr[i] < pivot)
  10.             i++;
  11.         while (arr[j] > pivot)
  12.             j--;
  13.         if (i <= j) {
  14.             tmp = arr[i];
  15.             arr[i] = arr[j];
  16.             arr[j] = tmp;
  17.             i++;
  18.             j--;
  19.         }
  20.     };
  21.  
  22.     /* recursion */
  23.     if (left < j)
  24.         quickSort(arr, left, j);
  25.     if (i < right)
  26.         quickSort(arr, i, right);
  27.     return 0;
  28. }
  29. //Bin search
  30. int binarySearch(int *arr, int value, int left, int right) {
  31.     while (left <= right) {
  32.         int middle = (left + right) / 2;
  33.         if (arr[middle] == value)
  34.             return middle;
  35.         else if (arr[middle] > value)
  36.             right = middle - 1;
  37.         else
  38.             left = middle + 1;
  39.     }
  40.     return -1;
  41. }
  42. //void show(int* a, int count) {
  43. //  for (int i = 0; i < count; i++)
  44. //      cout << a[i] << ";";   
  45. //  cout << endl;
  46. //}
  47.  
  48. int main() {
  49.     //users
  50.     int* a = new int[10000000];
  51.     //current user count
  52.     int current_count = 0;
  53.     int cmd; int id;
  54.     while (std::cin >> cmd) {
  55.         if (cmd == 0)
  56.             break;
  57.         //get user id
  58.         std::cin >> id;
  59.         //add command
  60.         if (cmd == 1) {
  61.             int search = binarySearch(a, id, 0, current_count - 1);
  62.             //da co trong danh sach thi khong them vao nua
  63.             if (search != -1)
  64.                 continue;          
  65.             a[current_count] = id;
  66.             current_count++;
  67.             quickSort(a, 0, current_count - 1);
  68.         }
  69.         //search command
  70.         if (cmd == 2) {
  71.             //search
  72.             int search = binarySearch(a, id, 0, current_count - 1);
  73.             if (search == -1)          
  74.                 std::cout << 0 << std::endl;
  75.             else std::cout << search + 1 << std::endl;
  76.         }
  77.     }
  78.     delete[] a;
  79.     return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement