#include<iostream>
#include<algorithm>
#include<math.h>
using namespace std;
struct student{
string name;
long long score;
};
student students[100001];
int studentsl=0;
bool CMP(student x,student y){
for(int i=0;i<min(x.name.size(),y.name.size());i++){
if(x.name[i]>y.name[i])return true;
if(x.name[i]<y.name[i])return false;
}
if(y.name.size()<x.name.size())return true;
else return false;
}
bool UpDown(string x,string y){
for(int i=0;i<min(x.size(),y.size());i++){
if(x[i]>y[i])return false;
if(x[i]<y[i])return true;
}
if(x.size()<y.size())return true;
else return false;
}
int FindStudent(string name){
sort(students,students+studentsl,CMP);
int i=(studentsl)/2;
while(students[i].name!=name){
if(i==0||i==studentsl-1){
i=-1;
break;
}
if(UpDown(students[i].name,name))i+=(studentsl-i)/2;
else i=(i+1)/2;
}
return i;
}
int main(){
int nn;
cin>>nn;
for(int i=0;i<nn;i++){
int num;
cin>>num;
if(num==1){
string n;
cin>>n;
int sco;
cin>>sco;
int x=FindStudent(n);
if(x==-1){
students[studentsl].name=n;
students[studentsl++].score=sco;
}else{
students[x].score=sco;
}
cout<<"OK"<<endl;
}
if(num==2){
string n;
cin>>n;
int x=FindStudent(n);
if(x==-1){
cout<<"Not found"<<endl;
}else{
cout<<students[x].score<<endl;
}
}
if(num==3){
string n;
cin>>n;
int x=FindStudent(n);
if(x==-1){
cout<<"Not found"<<endl;
}else{
if(studentsl>1){
students[x].score=students[studentsl-1].score;
students[x].name=students[studentsl-1].name;
studentsl--;
}else{
students[x].name="";
students[x].score=0;
studentsl--;
}
cout<<"Deleted successfully"<<endl;
}
}
if(num==4){
cout<<studentsl<<endl;
}
}
return 0;
}
大佬帮助必关!