记录编号 199792 评测结果 EEEEEEEEEE
题目名称 学生成绩管理系统 最终得分 0
用户昵称 GravatarNVIDIA 是否通过 未通过
代码语言 C++ 运行时间 1.828 s
提交时间 2015-10-27 15:55:00 内存使用 2.43 MiB
显示代码纯文本
#include<cstdio>
#include<cstdlib>
#include<iomanip>
#include<cctype>
#include<queue>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<vector>
int w[2013];
using namespace std;
struct node
{
   int p,q;
   node *next;
   };
int main()
{
    int i,n,m,c,s,x,j,k,l,i1,i2;
    node *head,*a,*b,*e;
    freopen("linet.in","r",stdin);
    freopen("linet.out","w",stdout);
    head=(node *)malloc(sizeof(node));
    head->next=NULL;
    head->p=head->q=0;
    a=head;
    scanf("%d",&n);
    for (i=0;i<n;i++)
    {
       b=(node *)malloc(sizeof(node));
       b->next=NULL;
       scanf("%d%d",&b->p,&b->q);
       w[b->p]=1;
       a->next=b;
       a=b;
    }
   scanf("%d",&m);
    for (i=0;i<m;i++)
    {
        scanf("%d",&c);
        if (c==1) 
        {
          scanf("%d",&s);
           if (s==0)
           {
               printf("%d\n",n);
               a=head->next;
               while (a!=NULL)
               {printf("%d %d\n",a->p,a->q);a=a->next;}
           }      
           else 
           {
           scanf("%d",&x);
          if(w[x])
              {
              a=head->next;
              while(a!=NULL)
              {if (a->p==x) 
                 {printf("%d %d\n",a->p,a->q);break;}
               a=a->next;}
              }
           else printf("no\n");
           }
        }
       if (c==2) 
       {
         
           scanf("%d",&x);
           for (i1=0;i1<x;i1++)
           {
              scanf("%d%d%d",&j,&k,&l);
              if (n<2000)  
              {
                 if (w[k]==0) //重复?
                 {
                   b=(node *)malloc(sizeof(node));
                   b->next=NULL;
                   b->p=k;
                   b->q=l;
                   a=head;
			for (i2=0;i2<j;i2++) 
                   {                   
                   if (a==NULL)
                   {printf("out\n");break;}
                   a=a->next;
                   }
                   if (i2==j)
                   {
                   b->next=a->next;
                   a->next=b;
                   w[b->q]=1;
                   n++;
                   } 
                 }
                 else {printf("dup\n");break;}
              }
           }
           }
       if (c==3)  
       {
        scanf("%d",&s);
          for (i1=0;i1<s;i1++)
             {
                scanf("%d",&x);
                if (w[x]==1)
                   {
                   a=head->next;
                   while(a!=NULL)
                   if (a->next->p==x) {e=a->next;a->next=e->next;free(e);n--;break;}
                   else a=a->next;
             }
             else printf("error \n");
          }
       }
    }
   return 0;
}