注意点:
- 为了保证复杂度,所以放弃去重,所以不可以用二分离散化
- 由于1的原因,所以find需要从后逐个往前找,因为同一个柜子可能多次放入,后面的是最新的记录
#include<iostream>
#include<vector>
using namespace std;
#define PII pair<int, int>
#define x first
#define y second
const int N = 100010;
int n, q;
vector<PII> tank[N];
int find(int a, int b){
for(int i = tank[a].size() - 1; i >= 0; i --)
if(tank[a][i].x == b) return i;
return -1;
}
int main(){
cin >> n >> q;
while(q --){
int op, a, b; // 操作,柜子号,柜子格
cin >> op >> a >> b;
if(op == 1){
int x;
cin >> x;
if(x){
tank[a].push_back({b, x});
continue;
}
int u = find(a, b);
if(~u) tank[a][u].second = 0;
}else{
int u = find(a, b);
if(~u) cout << tank[a][u].second << endl;
}
}
return 0;
}