#include
<iostream>
#include <cstdio>
#include <map>
#include <queue>
using namespace std ;
const int maxt = 1000+10 ;
int main ()
{
int t ,kase = 1 ;
while ( scanf ( "%d" ,&t )!=EOF &&t )
{
printf ( "Scenario #%d \n " ,kase ++);
map<int ,int> team ;
for ( int i = 0 ;i <t ;i ++)
{
int n ,x ;
scanf ( "%d" ,&n );
while (n --)
{
scanf ( "%d" ,&x );
team [x ]=i ;
}
}
queue < int >q ,q2 [maxt ];
while ( 1 )
{
int x ;
char cmd [ 10 ];
scanf ( "%s" ,cmd );
if (cmd [ 0 ]== 'S' )
break ;
else if (cmd [ 0 ]== 'D' )
{
int t =q . front ();
printf ( "%d \n " ,q2 [t ]. front ());
q2 [t ]. pop ();
if (q2 [t ]. empty ()) q . pop ();
}
else if (cmd [ 0 ]== 'E' )
{
scanf ( "%d" ,&x );
int t =team [x ];
if (q2 [t ]. empty ())
q . push (t );
q2 [t ]. push (x );
}
}
printf ( " \n " );
}
return 0 ;
#include <cstdio>
#include <map>
#include <queue>
using namespace std ;
const int maxt = 1000+10 ;
int main ()
{
int t ,kase = 1 ;
while ( scanf ( "%d" ,&t )!=EOF &&t )
{
printf ( "Scenario #%d \n " ,kase ++);
map<int ,int> team ;
for ( int i = 0 ;i <t ;i ++)
{
int n ,x ;
scanf ( "%d" ,&n );
while (n --)
{
scanf ( "%d" ,&x );
team [x ]=i ;
}
}
queue < int >q ,q2 [maxt ];
while ( 1 )
{
int x ;
char cmd [ 10 ];
scanf ( "%s" ,cmd );
if (cmd [ 0 ]== 'S' )
break ;
else if (cmd [ 0 ]== 'D' )
{
int t =q . front ();
printf ( "%d \n " ,q2 [t ]. front ());
q2 [t ]. pop ();
if (q2 [t ]. empty ()) q . pop ();
}
else if (cmd [ 0 ]== 'E' )
{
scanf ( "%d" ,&x );
int t =team [x ];
if (q2 [t ]. empty ())
q . push (t );
q2 [t ]. push (x );
}
}
printf ( " \n " );
}
return 0 ;
本文介绍了一个使用 C++ 实现的比赛调度模拟系统。该系统通过读取各队伍的比赛安排,并根据命令进行队伍的比赛进程操作,包括报名(E)和结束比赛(D)。系统使用了 map 和 queue 数据结构来管理队伍及其比赛状态。

2037

被折叠的 条评论
为什么被折叠?



