Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- using namespace std;
- struct element{
- int value = 0;
- bool isNClear = false;
- };
- element set_[1000000];
- bool add(element* arr, int x){
- int i = x % 1000000;
- int check = 0;
- while(arr[i].value != 0){
- if((size_t)i >= sizeof(*arr)/sizeof(arr[0])){
- i = -1;
- }
- i++;
- check++;
- if((size_t)check > sizeof(*arr)/sizeof(arr[0]))
- return false;
- }
- arr[i].isNClear = true;
- arr[i].value = x;
- return true;
- }
- size_t find(element* arr, int x){
- int i = x % 1000000;
- int check = 0;
- // cout << arr[i].isNClear;
- while(arr[i].value != x && arr[i].isNClear){
- if((size_t)i >= sizeof(*arr)/sizeof(arr[0])){
- i = -1;
- }
- i++;
- check++;
- // cout << check << " " << sizeof(*arr)/sizeof(arr[0]);
- if((size_t)check > sizeof(*arr)/sizeof(arr[0]))
- return -1;
- }
- if(arr[i].value == x)
- return i;
- else
- return -1;
- }
- void deleteel(element* arr, int x){
- int i = x % 1000000;
- int check = 0;
- while(arr[i].value != x && !arr[i].isNClear){
- if((size_t)i >= sizeof(*arr)/sizeof(arr[0])){
- i = -1;
- }
- i++;
- check++;
- if((size_t)check > sizeof(*arr)/sizeof(arr[0]))
- return ;
- }
- arr[i].value = 0;
- }
- void show(element* arr){
- cout << "\n";
- for(size_t i = 0; i<1000000; i++){
- if(arr[i].value != 0)
- cout << arr[i].value << ",";
- }
- cout << "\n";
- }
- int main()
- {
- ifstream inp("set.in");
- ofstream out("set.out");
- while(true){
- string operathion;
- inp >> operathion;
- // cout << operathion;
- if(operathion == "insert"){
- int x;
- inp >> x;
- if(find(set_, x) == -1)
- add(set_, x);
- operathion = "";
- }
- else if(operathion == "exists"){
- int x;
- inp >> x;
- int result = find(set_, x);
- if(result == -1){
- out << "false\n";
- }
- else{
- out << "true\n";
- }
- operathion = "";
- }
- else if(operathion == "delete"){
- int x;
- inp >> x;
- deleteel(set_, x);
- operathion = "";
- }
- else{
- return 0;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement