Pagini recente » Cod sursa (job #69860) | Monitorul de evaluare | Cod sursa (job #717720) | Cod sursa (job #149328) | Cod sursa (job #1862598)
#include <bits/stdc++.h>
using namespace std;
FILE *fin;
ofstream fout("hashuri.out");
#define BUF 1 << 17
int pos = BUF;
char buf[BUF];
inline char next() {
if(pos == BUF)
fread(buf, 1, BUF, fin), pos = 0;
return buf[pos++];
}
inline int read() {
int x = 0, semn = 1;
char ch = next();
while(!isdigit(ch) && ch != '-')
ch = next();
if(ch == '-')
ch = next(), semn = -1;
while(isdigit(ch))
x = x * 10 + ch - '0', ch = next();
return x * semn;
}
#define Hsize 1 << 14 - 1
class Hash {
private:
vector <int> H[Hsize + 1];
public:
inline void insert(int val) {
int key = val & Hsize;
H[key].push_back(val);
}
inline void erase(int val) {
int key = val & Hsize;
int i = 0, sz = H[key].size();
while(i < sz && H[key][i] != val)
i++;
if(i < sz) {
H[key][i] = H[key][sz - 1];
H[key].pop_back();
}
}
inline bool find(int val) {
int key = val & Hsize;
int i = 0, sz = H[key].size();
while(i < sz && H[key][i] != val)
i++;
if(i < sz)
return true;
return false;
}
inline int count(int val) {
int key = val & Hsize;
int i = 0, sz = H[key].size();
int tr = 0;
while(i < sz) {
if(H[key][i] == val)
tr++;
i++;
}
return tr;
}
};
Hash hh;
int main() {
fin = fopen("hashuri.in", "r");
ofstream fout("hashuri.out");
int N = read();
for(int i = 0;i < N;i++) {
int op = read(), val = read();
if(op == 1) {
hh.insert(val);
}
if(op == 2) {
hh.erase(val);
}
// if(op == 3) {
// int c = hh.find(val);
//
// fout << c << '\n';
// }
}
fclose(fin);
fout.close();
return 0;
}