Submission #68377

#TimeUsernameProblemLanguageResultExecution timeMemory
68377IvanCSnake Escaping (JOI18_snake_escaping)C++11
12 / 100
526 ms66560 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXL = 15;
const int MAXN = (1 << 13) + 3;
const int MAXV = 1594326; 

char entrada[MAXL];
int pot2[MAXL],pot3[MAXL];
int tab[MAXV],valor[MAXN];
int L,Q;

void brute(int pos,int base3,int base2,int first_2){

	if(pos == L){
		if(first_2 == -1){
			tab[base3] = valor[base2];
		}
		else{
			tab[base3] = tab[base3 - pot3[first_2]] + tab[base3 - 2*pot3[first_2]]; 
		}
		return;
	}

	brute(pos + 1, base3, base2, first_2 );
	brute(pos + 1, base3 + pot3[pos], base2 + pot2[pos], first_2 );
	brute(pos + 1, base3 + 2*pot3[pos], base2, (first_2 != -1) ? (first_2) : (pos) );

}

int main(){

	scanf("%d %d",&L,&Q);
	assert(L <= 13);

	for(int i = 0;i<(1 << L);i++){
		char c;
		scanf(" %c",&c);
		valor[i] = (c - '0');
	}

	pot3[0] = pot2[0] = 1;
	for(int i = 1;i<L;i++){
		pot3[i] = pot3[i-1]*3;
		pot2[i] = pot2[i-1]*2;
	}

	brute(0,0,0,-1);

	for(int q = 0;q<Q;q++){

		int numero = 0;
		scanf("%s",entrada);

		for(int i = 0,j = L - 1;i<L;i++,j--){
			int davez = entrada[i] - '0';
			if(entrada[i] == '?') davez = 2;
			numero += pot3[j]*davez;
		}

		printf("%d\n",tab[numero]);

	}

	return 0;

}

Compilation message (stderr)

snake_escaping.cpp: In function 'int main()':
snake_escaping.cpp:33:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d",&L,&Q);
  ~~~~~^~~~~~~~~~~~~~~
snake_escaping.cpp:38:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %c",&c);
   ~~~~~^~~~~~~~~~
snake_escaping.cpp:53:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%s",entrada);
   ~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...