Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. using namespace std;
  5. struct element{
  6.     int value = 0;
  7.     bool isNClear = false;
  8. };
  9. element set_[1000000];
  10.  
  11. bool add(element* arr, int x){
  12.     int i = x % 1000000;
  13.     int check = 0;
  14.     while(arr[i].value != 0){
  15.         if((size_t)i >= sizeof(*arr)/sizeof(arr[0])){
  16.             i = -1;
  17.         }
  18.         i++;
  19.         check++;
  20.         if((size_t)check > sizeof(*arr)/sizeof(arr[0]))
  21.             return false;
  22.  
  23.     }
  24.  
  25.     arr[i].isNClear = true;
  26.     arr[i].value = x;
  27.     return true;
  28.  
  29. }
  30. size_t find(element* arr, int x){
  31.     int i = x % 1000000;
  32.     int check = 0;
  33.    // cout << arr[i].isNClear;
  34.     while(arr[i].value != x && arr[i].isNClear){
  35.         if((size_t)i >= sizeof(*arr)/sizeof(arr[0])){
  36.             i = -1;
  37.         }
  38.         i++;
  39.         check++;
  40.        // cout << check << " " << sizeof(*arr)/sizeof(arr[0]);
  41.         if((size_t)check > sizeof(*arr)/sizeof(arr[0]))
  42.             return -1;
  43.     }
  44.     if(arr[i].value == x)
  45.         return i;
  46.     else
  47.         return -1;
  48.  
  49. }
  50. void deleteel(element* arr, int x){
  51.     int i = x % 1000000;
  52.     int check = 0;
  53.     while(arr[i].value != x && !arr[i].isNClear){
  54.         if((size_t)i >= sizeof(*arr)/sizeof(arr[0])){
  55.             i = -1;
  56.         }
  57.         i++;
  58.         check++;
  59.         if((size_t)check > sizeof(*arr)/sizeof(arr[0]))
  60.             return ;
  61.     }
  62.     arr[i].value = 0;
  63. }
  64. void show(element* arr){
  65.     cout << "\n";
  66.     for(size_t i = 0; i<1000000; i++){
  67.         if(arr[i].value != 0)
  68.             cout << arr[i].value << ",";
  69.     }
  70.     cout << "\n";
  71. }
  72. int main()
  73. {
  74.     ifstream inp("set.in");
  75.     ofstream out("set.out");
  76.  
  77.     while(true){
  78.         string operathion;
  79.         inp >> operathion;
  80.       //  cout << operathion;
  81.         if(operathion == "insert"){
  82.             int x;
  83.             inp >> x;
  84.             if(find(set_, x) == -1)
  85.                 add(set_, x);
  86.             operathion = "";
  87.  
  88.         }
  89.         else if(operathion == "exists"){
  90.             int x;
  91.             inp >> x;
  92.             int result = find(set_, x);
  93.             if(result == -1){
  94.                 out << "false\n";
  95.  
  96.             }
  97.             else{
  98.                 out << "true\n";
  99.             }
  100.             operathion = "";
  101.  
  102.         }
  103.         else if(operathion == "delete"){
  104.             int x;
  105.             inp >> x;
  106.             deleteel(set_, x);
  107.             operathion = "";
  108.         }
  109.         else{
  110.             return 0;
  111.         }
  112.     }
  113.  
  114.  
  115.     return 0;
  116.  
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement