中午買飯的人特多,食堂真是太擁擠了,買個飯費勁,理工大的小孩還是很聰明的,直接奔政通超市,哈哈,確實,政通超市里面也賣飯,有好幾種菜,做的比食堂好吃多了,價格也不比食堂貴,并且買菜就送豆漿,吸引了不少童鞋。所以有時吧,人還是很多的,排隊是免不了的,悲劇的是超市只有兩個收銀窗口。
問題是這樣的:開始有兩隊人在排隊,現在咱們只研究第一隊,現在我們給每個人一個編號,保證編號各不相同,排在前面的人買完飯就走了,有些人挑完飯就排在后面等待付款,還有一些人比較聰明,看到另一個隊人比較少,直接離開這個隊到另一個隊去了。我要問的是隊的總人數和某個位置上人的編號。
首先輸入一個整數m(m<10000),代表當前有m個人,第二行輸入m個數,代表每個人的編號,第三行輸入一個整數n(n<10000),代表隊列變動和詢問一共n次,以后n行,JOIN X表示編號為X(保證與以前的編號不同)的人加入;LEAVE Y表示第Y(Y小于當前隊列長度)個位置 上的人離隊 ;ASK Z(Z小于當前隊列長度)表示詢問第Z個位置上的人的編號;FINISH D表示有D個人買完飯離開了;LENGTH表示詢問隊列的長度 。保證所有數據在int 范圍內.
對每個詢問輸出相應的答案,每個答案占一行。
31 2 36JOIN 4ASK 2LEAVE 2LENGTHFINISH 2LENGTHExample Output
231#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int m, a[10010], n, i, j, x; char s[10]; scanf("%d", &m); for(i = 1; i <= m; i++) scanf("%d", &a[i]); scanf("%d", &n); getchar(); for(i = 1; i <= n; i++) { scanf("%s", s); if(strcmp(s, "JOIN") == 0) { scanf("%d", &x); m++; a[m] = x; } else if(strcmp(s, "LEAVE") == 0) { scanf("%d", &x); for(j = x; j < m; j++) { a[j] = a[j + 1]; } m--; } else if(strcmp(s, "ASK") == 0) { scanf("%d", &x); printf("%d/n", a[x]); } else if(strcmp(s, "FINISH") == 0) { scanf("%d", &x); for(j = x + 1; j <= m; j++) a[j - x] = a[j]; m = m - x; } else { printf("%d/n", m); } } return 0;}
新聞熱點
疑難解答