记录编号 |
459079 |
评测结果 |
EEWEEEEEEE |
题目名称 |
学生成绩管理系统 |
最终得分 |
0 |
用户昵称 |
JustWB |
是否通过 |
未通过 |
代码语言 |
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;
}