제출 #90100

#제출 시각아이디문제언어결과실행 시간메모리
90100IvanCSnake Escaping (JOI18_snake_escaping)C++17
5 / 100
277 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;
 
}

컴파일 시 표준 에러 (stderr) 메시지

snake_escaping.cpp: In function 'int main()':
snake_escaping.cpp:34: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:39:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf(" %c",&c);
   ~~~~~^~~~~~~~~~
snake_escaping.cpp:54: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...