Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //Quick sort
- int quickSort(int arr[], int left, int right) {
- int i = left, j = right;
- int tmp;
- int pivot = arr[(left + right) / 2];
- /* partition */
- while (i <= j) {
- while (arr[i] < pivot)
- i++;
- while (arr[j] > pivot)
- j--;
- if (i <= j) {
- tmp = arr[i];
- arr[i] = arr[j];
- arr[j] = tmp;
- i++;
- j--;
- }
- };
- /* recursion */
- if (left < j)
- quickSort(arr, left, j);
- if (i < right)
- quickSort(arr, i, right);
- return 0;
- }
- //Bin search
- int binarySearch(int *arr, int value, int left, int right) {
- while (left <= right) {
- int middle = (left + right) / 2;
- if (arr[middle] == value)
- return middle;
- else if (arr[middle] > value)
- right = middle - 1;
- else
- left = middle + 1;
- }
- return -1;
- }
- //void show(int* a, int count) {
- // for (int i = 0; i < count; i++)
- // cout << a[i] << ";";
- // cout << endl;
- //}
- int main() {
- //users
- int* a = new int[10000000];
- //current user count
- int current_count = 0;
- int cmd; int id;
- while (std::cin >> cmd) {
- if (cmd == 0)
- break;
- //get user id
- std::cin >> id;
- //add command
- if (cmd == 1) {
- int search = binarySearch(a, id, 0, current_count - 1);
- //da co trong danh sach thi khong them vao nua
- if (search != -1)
- continue;
- a[current_count] = id;
- current_count++;
- quickSort(a, 0, current_count - 1);
- }
- //search command
- if (cmd == 2) {
- //search
- int search = binarySearch(a, id, 0, current_count - 1);
- if (search == -1)
- std::cout << 0 << std::endl;
- else std::cout << search + 1 << std::endl;
- }
- }
- delete[] a;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement