恶心的模拟题
用庄牛牛的方法才写出
果然我还很弱
#include <iostream> #include <list> #include <string> using namespace std; int team[1000000]; list< list<int> > q; list<int> *pos[1001]; int main() { int t,n,i,j,temp,num,cas = 1; char str[10]; list<int> tq; while (1) { scanf("%d",&t); if (t == 0) break; for (i = 0;i <= 1000;i++) pos[i] = NULL; memset(team,-1,sizeof(team)); for (j = 0;j < t;j++) { scanf("%d",&n); for (i = 0;i < n;i++) { scanf("%d",&temp); team[temp] = j; } } q.clear(); printf("Scenario #%d\n",cas++); while (scanf("%s",&str) != EOF && str[0] != 'S') { if (str[0] == 'E') { scanf("%d",&num); if (team[num] == -1) { tq.push_back(num); q.push_back(tq); tq.clear(); } else { if (pos[team[num]] == NULL) { tq.push_back(num); q.push_back(tq); pos[team[num]] = &(q.back()); tq.clear(); } else { (*pos[team[num]]).push_back(num); } } } else if (str[0] == 'D') { temp = (q.front()).front(); printf("%d\n",temp); (q.front()).pop_front(); if((q.front()).empty()) { q.pop_front(); pos[team[temp]]=NULL; } } } printf("\n"); } return 0; }