记录编号 459079 评测结果 EEWEEEEEEE
题目名称 学生成绩管理系统 最终得分 0
用户昵称 GravatarJustWB 是否通过 未通过
代码语言 C++ 运行时间 1.770 s
提交时间 2017-10-12 16:25:57 内存使用 5.17 MiB
显示代码纯文本
#include<cstdio>
#include<map>
#include<iostream>
using namespace std;
struct stu
{
	int num,gra;
	stu *nt;
	stu(int a,int b)
	{
		num=a;
		gra=b;
		nt=NULL;
	}
}*now;
inline int get();
inline void insert(int dis,int num,int gra);
inline void search(int dis);
inline void del(int num);
inline void print();
int n,m,all,opt,a,b;
stu *root,*ins;
map<int,bool> test;
int main()
{
	freopen("linet.in","r",stdin);
	freopen("linet.out","w",stdout);
	n=get();all=n;
	a=get(),b=get();
	now=new stu(a,b);
	root=now;test[a]=true;
	for(int i=1;i<n;i++)
	{
		a=get(),b=get();
		now->nt=new stu(a,b);
		test[a]=true;now=now->nt;
	}
		
	m=get();
	for(int i=1;i<=m;i++)
	{
		opt=get();
		if(opt==1)
		{
			a=get();
			if(a==1)search(get());
			else print();
		}
		else if(opt==2)
		{
			a=get();
			int ta,tb,tc;
			for(int i=1;i<=a;i++)
			{
				ta=get(),tb=get(),tc=get();
				if(test[tb])printf("dup\n");
				else insert(ta,tb,tc);
			}
		}
		else
		{
			a=get();
			for(int i=1;i<=a;i++)del(get());
		}
	}
	return 0;
}
inline void del(int num)
{
	stu *tmp=root,*t;
	while(tmp!=NULL&&tmp->num!=num)
		t=tmp,
		tmp=tmp->nt;
	if(tmp==NULL)printf("error\n");
	else 
	{
		all--;
		t->nt=tmp->nt;
		delete tmp;
	}
}
inline void insert(int dis,int num,int gra)
{
	stu *tmp=root;
	if(dis>all)printf("out\n");
	else
	{
		all++;
		if(!dis)
		{
			stu *p=new stu(num,gra);
			p->nt=root;
			root=p;
			return;
		}
		for(int i=1;i<dis;i++)tmp=tmp->nt;
		stu *p=new stu(num,gra);
		p->nt=tmp->nt;
		tmp->nt=p;
	}	
}
inline void print()
{
	stu *tmp=root;
	printf("%d\n",all);
	while(tmp!=NULL)printf("%d %d\n",tmp->num,tmp->gra),tmp=tmp->nt;
}
inline void search(int dis)
{
	stu *tmp=root;
	while(tmp->num!=dis&&tmp!=NULL)tmp=tmp->nt;
	if(tmp==NULL)printf("no\n");
	else printf("%d %d\n",tmp->num,tmp->gra);
}
inline int get()
{
	int t=0;char c=getchar(),j=1;
	while(!isdigit(c))
		if(c=='-')j=-1,c=getchar();
		else c=getchar();
	while(isdigit(c))
		t=(t<<3)+(t<<1)+c-'0',
		c=getchar();
	return j*t;
}