《数据结构编程实验》 2.4.5MANAGER

来源:互联网 发布:北方软件学院好考吗 编辑:程序博客网 时间:2024/05/17 23:25

题目大意:

  模拟一个队列,按给出的输出列表输出第i个出队的元素,若队列为空则输出-1。


题目地址:

  POJ  1281 ZOJ  1371 UVA  2514


题解:

  纯模拟,但有多组数据,在这里被坑了。


#include <iostream>#include <cstdio>using namespace std;int f[10010],a[10000];int j,k,l,n,m,mp;int del(){    int i;    if (k==1)    {        i=1;        while (i<=mp)            if (f[i]>0) {f[i]--;m++;if (m==a[l]) {printf("%d\n",i);l++;}return 0;}            else i++;    }    else    {        i=mp;        while (i>0)            if (f[i]>0) {f[i]--;m++;if (m==a[l]) {printf("%d\n",i);l++;}return 0;}            else i--;    }    m++;    return 1;}int main(){    char c;    int i;    while (scanf("%d",&mp)!=EOF)    {        scanf("%d",&n);        for (i=1;i<=mp;i++) f[i]=0;        for (i=0;i<n;i++) scanf("%d",&a[i]);        m=0;        k=1;        l=0;        while (scanf("%c",&c)&&c!='e')        {            if (c=='a') {scanf("%d",&i);f[i]++;}            if (c=='r') if (del()) if (m==a[l]) {printf("-1\n");l++;}            if (c=='p') {scanf("%c%c",&c,&c);if (c=='2') k=2;else k=1;}        }        printf("\n");    }    return 0;}


0 0