Advertisement
nontawat1996

plate

Sep 9th, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.61 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int st[20001][2];
  4. int Nc,Ns,inst,last=1,first=1;
  5. struct asdf
  6. {
  7.     int index;
  8.     int room;
  9.     int id;
  10.     int rear;
  11. } data[20001];
  12. int findcs(int cs)
  13. {
  14.     int i=last,ck=1;
  15.     while(data[i].index!=-1 || data[i].room==cs)
  16.     {
  17.         if(data[i].room==cs)
  18.         {
  19.             ck=2;
  20.             break;
  21.         }
  22.         i=data[i].index;
  23.     }
  24.     if(ck==2) return i;
  25.     else return -1;
  26. }
  27. int main()
  28. {
  29.     int i,j,run,ck,cs;
  30.     int inn=0,out=0;
  31.     int node=1;
  32.     char in;
  33.     scanf("%d%d",&Nc,&Ns);
  34.     for(i=0; i<Ns; i++) scanf("%d %d",&st[i][0],&st[i][1]);
  35.     while(1)
  36.     {
  37.         scanf(" %c",&in);
  38.         if(in=='E')
  39.         {
  40.             inn++;
  41.             scanf("%d",&inst);
  42.             i=0;
  43.             while(st[i][1]!=inst) i++;
  44.             cs=st[i][0];
  45.             if(first==node)
  46.             {
  47.                 data[first].id=inst;
  48.                 data[first].index=-1;
  49.                 data[first].rear=-1;
  50.                 data[first].room=cs;
  51.                 node++;
  52.             }
  53.             else
  54.             {
  55.                 ck=findcs(cs);
  56.                 int renode;
  57.                 if(ck>0)
  58.                 {
  59.                     renode=data[ck].rear;
  60.                     data[node].id=inst;
  61.                     data[node].index=ck;
  62.                     data[node].room=cs;
  63.                     data[node].rear=renode;
  64.                     if(renode>0)
  65.                     {
  66.                         data[renode].index=node;
  67.                         data[ck].rear=node;
  68.                     }
  69.                     else
  70.                     {
  71.                         data[ck].rear=node;
  72.                         last=node;
  73.                     }
  74.                     node++;
  75.                 }
  76.                 else
  77.                 {
  78.                     data[node].id=inst;
  79.                     data[node].index=last;
  80.                     data[node].rear=-1;
  81.                     data[node].room=cs;
  82.                     data[last].rear=node;
  83.                     last=node;
  84.                     node++;
  85.                 }
  86.             }
  87.         }
  88.         else if(in=='D')
  89.         {
  90.             if(inn==out) printf("empty\n");
  91.             else
  92.             {
  93.                 out++;
  94.                 int temp;
  95.                 printf("%d\n",data[first].id);
  96.                 temp=data[first].rear;
  97.                 data[first].rear=-1;
  98.                 first=temp;
  99.                 data[first].index=-1;
  100.             }
  101.         }
  102.         else
  103.         {
  104.             printf("0\n");
  105.             return 0;
  106.         }
  107.     }
  108.     return 0;
  109. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement