⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 airport.cpp

📁 Central European Olympiad in Informatics Collection of solutions...
💻 CPP
字号:
/*
Alfonso2 Peterssen
26 - 7 - 2008
CEOI 2007 "Airport Show"
*/
#include <cstdio>
#include <cstdlib>

#define REP( i, n ) \
    for ( int i = 0; i < (n); i++ )

const int MAXN = 5000;

int N;
int S[2];
int owner[MAXN];
int rway[2][MAXN];
int sol[2 * MAXN];
bool mark[MAXN][MAXN];

void dfs( int a, int b ) {

    if ( a >= S[0] || b >= S[1] || mark[a][b] )
        return ;

    mark[a][b] = true;
    int &bossa = owner[ rway[0][a] ];
    int &bossb = owner[ rway[1][b] ];

    if ( bossa == 2 && bossb == 1 ) {
        REP( i, a + b )
            printf( "%d", sol[i] );
        printf( "\n" );
        exit( 0 );
    }

    if ( bossa == 0 || bossa == 1 ) {
        bossa ^= 1;
        sol[a + b] = 1;
        dfs( a + 1, b );
        bossa ^= 1;
    }

    if ( bossb == 0 || bossb == 2 ) {
        bossb ^= 2;
        sol[a + b] = 2;
        dfs( a, b + 1 );
        bossb ^= 2;
    }
}

int main() {

    scanf( "%d", &N );
    REP( i, 2 ) {
        scanf( "%d", &S[i] );
        REP( j, S[i] )
            scanf( "%*s %d", &rway[i][j] );
    }

    dfs( 0, 0 );

    printf( "The performances will always finish.\n" );

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -