求助!全TimeLimitError!
查看原帖
求助!全TimeLimitError!
892625
WangYinxiAlex楼主2024/4/28 21:22
#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;
}

大佬帮助必关!

2024/4/28 21:22
加载中...