Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #define forn( i,n ) for ( int i=0; i<(int)(n); i++ )
- int n, m, a[100], val[5];
- int u1[1010], u2[1010], u3[1010], u4[1010];
- int wi[100], wj[100];
- bool u[7][7];
- void solveTicket( int id ) {
- forn( i, 76 ) wi[i] = wj[i] = -1;
- int x;
- forn( i, 5 )
- forn( j, 5 ) {
- scanf( "%d", &x );
- wi[x] = i;
- wj[x] = j;
- u[i][j] = false;
- }
- u1[id] = u2[id] = u3[id] = u4[id] = 0;
- int cnt = 0;
- forn( i, n ) {
- if ( wi[ a[i] ] != -1 ) {
- u[ wi[a[i]] ][ wj[a[i]] ] = 1;
- cnt++;
- }
- if ( i < 35 && !u1[id] ) {
- if ( u[0][0] && u[0][4] && u[4][0] && u[4][4] ) {
- u1[id] = i;
- // res += val[0];
- }
- }
- if ( i < 40 && !u2[id] ) {
- if ( u[2][0] && u[2][1] && u[2][2] && u[2][3] && u[2][4] ) {
- u2[id] = i;
- // res += val[1];
- }
- }
- if ( i < 45 && !u3[id] ) {
- if ( u[0][0] && u[1][1] && u[2][2] && u[3][3] && u[4][4] &&
- u[0][4] && u[1][3] && u[3][1] && u[4][0] ) {
- u3[id] = i;
- // res += val[2];
- }
- }
- if ( !u4[id] ) {
- if ( cnt == 25 ) {
- u4[id] = i;
- }
- }
- }
- }
- int main() {
- int tc;
- scanf( "%d", &tc );
- for ( int q=1; q<=tc; q++ ) {
- scanf( "%d %d", &n, &m );
- forn( i, n ) scanf( "%d", &a[i] );
- forn( i, 4 ) scanf( "%d", &val[i] );
- if ( q > 1 ) printf( "\n" );
- printf( "Case %d:\n", q );
- int min4 = 100;
- forn( i, m ) {
- solveTicket( i );
- if ( u4[i] != 0 && u4[i] < min4 )
- min4 = u4[i];
- }
- forn( i, m ) {
- int res = 0;
- if ( u1[i] != 0 && u1[i] <= min4 ) res += val[0];
- if ( u2[i] != 0 && u2[i] <= min4 ) res += val[1];
- if ( u3[i] != 0 && u3[i] <= min4 ) res += val[2];
- if ( u4[i] != 0 && u4[i] <= min4 ) res += val[3];
- // printf( "%d %d %d %d\n", u1[i], u2[i], u3[i], u4[i] );
- printf( "%d\n", res );
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement