#include<iostream>
#include<cstring>
int scores[6][3];
int trials[6][3];
int questions[4][6][3] =
{
{
{ 5, 0, 0 },
{ 3, 0, 2 },
{ 2, 0, 3 },
{ 0, 0, 5 },
{ 4, 0, 1 },
{ 1, 0, 4 },
},
{
{ 4, 1, 0 },
{ 3, 0, 2 },
{ 4, 1, 0 },
{ 1, 1, 3 },
{ 0, 0, 5 },
{ 1, 1, 3 },
},
{
{ 5, 0, 0 },
{ 4, 0, 1 },
{ 2, 2, 1 },
{ 2, 0, 3 },
{ 1, 0, 4 },
{ 0, 0, 5 },
},
{
{ 5, 0, 0 },
{ 3, 1, 1 },
{ 2, 1, 2 },
{ 2, 0, 3 },
{ 0, 0, 5 },
{ 1, 0, 4 },
},
};
#include <iostream>
using namespace std;
constexpr int matches[][2] =
{
{ 0, 1 }, { 0, 2 }, { 0, 3 }, { 0, 4 }, { 0, 5 },
{ 1, 2 }, { 1, 3 }, { 1, 4 }, { 1, 5 },
{ 2, 3 }, { 2, 4 }, { 2, 5 },
{ 3, 4 }, { 3, 5 },
{ 4, 5 },
};
enum RESULT
{
win,
even,
lose,
};
bool possible;
void test( int game_index );
inline void test_sub(
const int team_a, const RESULT result_a,
const int team_b, const RESULT result_b,
const int game_index )
{
if( trials[ team_a ][ result_a ] + 1 <= scores[ team_a ][ result_a ] &&
trials[ team_b ][ result_b ] + 1 <= scores[ team_b ][ result_b ] )
{
trials[ team_a ][ result_a ]++;
trials[ team_b ][ result_b ]++;
test( game_index + 1 );
trials[ team_a ][ result_a ]--;
trials[ team_b ][ result_b ]--;
}
}
void test( int game_index )
{
if( game_index >= sizeof matches / sizeof *matches )
{
possible = true;
return;
}
const int team_a = matches[ game_index ][ 0 ];
const int team_b = matches[ game_index ][ 1 ];
test_sub( team_a, win, team_b, lose, game_index );
if( possible ) return;
test_sub( team_a, lose, team_b, win, game_index );
if( possible ) return;
test_sub( team_a, even, team_b, even, game_index );
if( possible ) return;
}
int main()
{
for( int i = 0; i < 4; ++i )
{
memset( trials, 0, sizeof trials );
memcpy( scores, questions + i, sizeof scores );
possible = false;
test( 0 );
cout << possible << " ";
}
cout << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPGNzdHJpbmc+CgppbnQgc2NvcmVzWzZdWzNdOwoKaW50IHRyaWFsc1s2XVszXTsKCmludCBxdWVzdGlvbnNbNF1bNl1bM10gPQp7CiAgICB7CiAgICAgICAgeyA1LCAwLCAwIH0sCiAgICAgICAgeyAzLCAwLCAyIH0sCiAgICAgICAgeyAyLCAwLCAzIH0sCiAgICAgICAgeyAwLCAwLCA1IH0sCiAgICAgICAgeyA0LCAwLCAxIH0sCiAgICAgICAgeyAxLCAwLCA0IH0sCiAgICB9LAogICAgewogICAgICAgIHsgNCwgMSwgMCB9LAogICAgICAgIHsgMywgMCwgMiB9LAogICAgICAgIHsgNCwgMSwgMCB9LAogICAgICAgIHsgMSwgMSwgMyB9LAogICAgICAgIHsgMCwgMCwgNSB9LAogICAgICAgIHsgMSwgMSwgMyB9LAogICAgfSwKICAgIHsKICAgICAgICB7IDUsIDAsIDAgfSwKICAgICAgICB7IDQsIDAsIDEgfSwKICAgICAgICB7IDIsIDIsIDEgfSwKICAgICAgICB7IDIsIDAsIDMgfSwKICAgICAgICB7IDEsIDAsIDQgfSwKICAgICAgICB7IDAsIDAsIDUgfSwKICAgIH0sCiAgICB7CiAgICAgICAgeyA1LCAwLCAwIH0sCiAgICAgICAgeyAzLCAxLCAxIH0sCiAgICAgICAgeyAyLCAxLCAyIH0sCiAgICAgICAgeyAyLCAwLCAzIH0sCiAgICAgICAgeyAwLCAwLCA1IH0sCiAgICAgICAgeyAxLCAwLCA0IH0sCiAgICB9LAp9OwoKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3RleHByIGludCBtYXRjaGVzW11bMl0gPQp7CiAgICB7IDAsIDEgfSwgeyAwLCAyIH0sIHsgMCwgMyB9LCB7IDAsIDQgfSwgeyAwLCA1IH0sCiAgICB7IDEsIDIgfSwgeyAxLCAzIH0sIHsgMSwgNCB9LCB7IDEsIDUgfSwKICAgIHsgMiwgMyB9LCB7IDIsIDQgfSwgeyAyLCA1IH0sCiAgICB7IDMsIDQgfSwgeyAzLCA1IH0sCiAgICB7IDQsIDUgfSwKfTsKCmVudW0gUkVTVUxUCnsKICAgIHdpbiwKICAgIGV2ZW4sCiAgICBsb3NlLAp9OwoKYm9vbCBwb3NzaWJsZTsKCnZvaWQgdGVzdCggaW50IGdhbWVfaW5kZXggKTsKCmlubGluZSB2b2lkIHRlc3Rfc3ViKAoJY29uc3QgaW50IHRlYW1fYSwgY29uc3QgUkVTVUxUIHJlc3VsdF9hLAoJY29uc3QgaW50IHRlYW1fYiwgY29uc3QgUkVTVUxUIHJlc3VsdF9iLAogICAgY29uc3QgaW50IGdhbWVfaW5kZXggKQp7CiAgICBpZiggdHJpYWxzWyB0ZWFtX2EgXVsgcmVzdWx0X2EgXSArIDEgPD0gc2NvcmVzWyB0ZWFtX2EgXVsgcmVzdWx0X2EgXSAmJgogICAgICAgIHRyaWFsc1sgdGVhbV9iIF1bIHJlc3VsdF9iIF0gKyAxIDw9IHNjb3Jlc1sgdGVhbV9iIF1bIHJlc3VsdF9iIF0gKQogICAgewogICAgICAgIHRyaWFsc1sgdGVhbV9hIF1bIHJlc3VsdF9hIF0rKzsKICAgICAgICB0cmlhbHNbIHRlYW1fYiBdWyByZXN1bHRfYiBdKys7CiAgICAgICAgdGVzdCggZ2FtZV9pbmRleCArIDEgKTsKICAgICAgICB0cmlhbHNbIHRlYW1fYSBdWyByZXN1bHRfYSBdLS07CiAgICAgICAgdHJpYWxzWyB0ZWFtX2IgXVsgcmVzdWx0X2IgXS0tOwogICAgfQp9Cgp2b2lkIHRlc3QoIGludCBnYW1lX2luZGV4ICkKewogICAgaWYoIGdhbWVfaW5kZXggPj0gc2l6ZW9mIG1hdGNoZXMgLyBzaXplb2YgKm1hdGNoZXMgKQogICAgewogICAgICAgIHBvc3NpYmxlID0gdHJ1ZTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgY29uc3QgaW50IHRlYW1fYSA9IG1hdGNoZXNbIGdhbWVfaW5kZXggXVsgMCBdOwogICAgY29uc3QgaW50IHRlYW1fYiA9IG1hdGNoZXNbIGdhbWVfaW5kZXggXVsgMSBdOwoKCXRlc3Rfc3ViKCB0ZWFtX2EsIHdpbiwgIHRlYW1fYiwgbG9zZSwgIGdhbWVfaW5kZXggKTsKICAgIGlmKCBwb3NzaWJsZSApIHJldHVybjsKCgl0ZXN0X3N1YiggdGVhbV9hLCBsb3NlLCB0ZWFtX2IsIHdpbiwgICBnYW1lX2luZGV4ICk7CiAgICBpZiggcG9zc2libGUgKSByZXR1cm47CgoJdGVzdF9zdWIoIHRlYW1fYSwgZXZlbiwgdGVhbV9iLCBldmVuLCAgZ2FtZV9pbmRleCApOwogICAgaWYoIHBvc3NpYmxlICkgcmV0dXJuOwp9CgppbnQgbWFpbigpCnsKICAgIGZvciggaW50IGkgPSAwOyBpIDwgNDsgKytpICkKICAgIHsKICAgICAgICBtZW1zZXQoIHRyaWFscywgMCwgc2l6ZW9mIHRyaWFscyApOwogICAgICAgIG1lbWNweSggc2NvcmVzLCBxdWVzdGlvbnMgKyBpLCBzaXplb2Ygc2NvcmVzICk7CiAgICAgICAgcG9zc2libGUgPSBmYWxzZTsKICAgICAgICB0ZXN0KCAwICk7CiAgICAgICAgY291dCA8PCBwb3NzaWJsZSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQ==