project-waiting in line

 

 

#include <stdio.h>

#define MAX_SIZE (10000)

 

struct node 

{

int qnum;

int key;

};

 

typedef struct node listnode;

listnode list[1000];

int queue[1000];

void checklist(int n,int m,int k,int q)

{

int i,j,t,min,times=0;

int results[1000];

for(i=0;i<1000;i++)

results[i]=0;

t=0;

while(times<k)

{

min=MAX_SIZE;

for(i=0;i<n;i++)

   {

if(list[i].key<min&&list[i].key>0)

   min=list[i].key;

if(results[list[i].qnum]==0&&t<540)

results[list[i].qnum]=t+list[i].key;

   }

   for(i=0;i<n;i++)

   {

if(min==list[i].key)

{

for(j=0;j<m-1;j++)

list[j*n+i]=list[j*n+n+i];

list[j*n+i]=list[m*n+times];

times++;

}

else

{

list[i].key=list[i].key-min;

}

}

t+=min;

}

for(i=0;i<q;i++)

if(results[queue[i]-1]>0)

printf("%02d:%02d\n",8+results[queue[i]-1]/60,results[queue[i]-1]%60);

else

if(results[queue[i]-1]==0)

printf("Sorry\n");

}

 

int main()

{

int n,m,k,q;

int i;

scanf("%d",&n);

while(n!=0)

{

scanf("%d%d%d",&m,&k,&q);

for(i=0;i<1000;i++)

{

list[i].key=0;

list[i].qnum=0;

queue[i]=0;

}

 

for(i=0;i<k;i++)

{

list[i].qnum=i;

scanf("%d",&list[i].key);

}

for(i=0;i<q;i++)

scanf("%d",&queue[i]);

checklist(n,m,k,q);

 

scanf("%d",&n);

 

}

}

 

posted @ 2011-01-11 15:16  楚夕  阅读(134)  评论(0编辑  收藏  举报