답안 #888003

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
888003 2023-12-15T18:12:54 Z hariaakas646 Snake Escaping (JOI18_snake_escaping) C++14
12 / 100
2000 ms 19684 KB
#include <bits/stdc++.h>

using namespace std;

#define scd(x) scanf("%d", &x)
#define sclld(x) scanf("%lld", &x)
#define frange(i, n) for(int i=0; i<n; i++)
#define forr(i, l, r) for(int i=l; i<r; i++)
#define all(vec) vec.begin(), vec.end()
#define mp make_pair
#define pb push_back
#define f first
#define s second

typedef long long lli;
typedef vector<int> vi;
typedef pair<int, int> pii;
typedef vector<pii> vii;
typedef vector<lli> vll;
typedef vector<vi> vvi;
typedef vector<bool> vb;
typedef set<int> seti;

void usaco() {
	freopen("/media/hariaakash646/785EF1075EF0BF46/CompetitiveProgramming/input.in", "r", stdin);
}

int main() {
	// usaco();
	int l, q;
	cin >> l >> q;
	string str;
	cin >> str;

	vi mv(1<<l);

	frange(i, 1<<l) {
		mv[i] = str[i] - '0';
	}

	int v = 1;



	frange(i, l) v *= 3;

	vi tot(v);

	frange(i, v) {
		int li=0;
		int r = 0;
		int x = 0;
		int k = i;
		bool done = false;
		frange(j, l) {
			if(k % 3 == 1) {
				x += pow(3, j);
				li += pow(3, j);
				r += pow(3, j);
			}
			else if(k % 3 == 2) {
				x += pow(3, j) * 2;
				if(!done)
					{r += pow(3, j); done = true;}
				else {
					li += pow(3, j) * 2;;
					r += pow(3, j) * 2;
				}
			}
			k /= 3;
		}
		k = i;
		if(!done) {
			int x2 = 0;
			frange(j, l) {
				if(k % 3 == 1) {
					x2 += (1<<j);
				}
				k /= 3;
			}
			tot[x] = mv[x2];
		}
		else {
			// cout << x << " " << li << " " << r << "\n";
			tot[x] = tot[li] + tot[r];
		}
	}

	frange(_, q) {
		string str;
		cin >> str;
		int v = 0;
		frange(i, l) {
			if(str[l-i-1] == '1') v += pow(3, i);
			else if(str[l-i-1] == '?') v += 2*pow(3, i);
		}
		// int to = 0;
		// frange(i, 1<<l) {
		// 	bool done = true;
		// 	frange(j, l) {
		// 		if(str[j] == '?') continue;
		// 		else {
		// 			if(bool(str[j] - '0') != bool(i&(1<<(l-j-1)))) done = false;
		// 		}
		// 	}
		// 	if(done) to += mv[i];
		// }
		// cout << str << " " << v << " ";
		cout << tot[v] << "\n";
	}
}

Compilation message

snake_escaping.cpp: In function 'void usaco()':
snake_escaping.cpp:25:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |  freopen("/media/hariaakash646/785EF1075EF0BF46/CompetitiveProgramming/input.in", "r", stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 604 KB Output is correct
2 Correct 23 ms 684 KB Output is correct
3 Correct 23 ms 604 KB Output is correct
4 Correct 23 ms 604 KB Output is correct
5 Correct 23 ms 600 KB Output is correct
6 Correct 25 ms 604 KB Output is correct
7 Correct 23 ms 600 KB Output is correct
8 Correct 23 ms 600 KB Output is correct
9 Correct 23 ms 604 KB Output is correct
10 Correct 23 ms 604 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 604 KB Output is correct
2 Correct 23 ms 684 KB Output is correct
3 Correct 23 ms 604 KB Output is correct
4 Correct 23 ms 604 KB Output is correct
5 Correct 23 ms 600 KB Output is correct
6 Correct 25 ms 604 KB Output is correct
7 Correct 23 ms 600 KB Output is correct
8 Correct 23 ms 600 KB Output is correct
9 Correct 23 ms 604 KB Output is correct
10 Correct 23 ms 604 KB Output is correct
11 Correct 1611 ms 13252 KB Output is correct
12 Correct 1648 ms 14920 KB Output is correct
13 Correct 1571 ms 14180 KB Output is correct
14 Correct 1616 ms 14196 KB Output is correct
15 Correct 1707 ms 15304 KB Output is correct
16 Correct 1593 ms 14636 KB Output is correct
17 Correct 1651 ms 14608 KB Output is correct
18 Correct 1593 ms 16524 KB Output is correct
19 Correct 1514 ms 13264 KB Output is correct
20 Correct 1661 ms 15140 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 604 KB Output is correct
2 Correct 23 ms 684 KB Output is correct
3 Correct 23 ms 604 KB Output is correct
4 Correct 23 ms 604 KB Output is correct
5 Correct 23 ms 600 KB Output is correct
6 Correct 25 ms 604 KB Output is correct
7 Correct 23 ms 600 KB Output is correct
8 Correct 23 ms 600 KB Output is correct
9 Correct 23 ms 604 KB Output is correct
10 Correct 23 ms 604 KB Output is correct
11 Correct 1611 ms 13252 KB Output is correct
12 Correct 1648 ms 14920 KB Output is correct
13 Correct 1571 ms 14180 KB Output is correct
14 Correct 1616 ms 14196 KB Output is correct
15 Correct 1707 ms 15304 KB Output is correct
16 Correct 1593 ms 14636 KB Output is correct
17 Correct 1651 ms 14608 KB Output is correct
18 Correct 1593 ms 16524 KB Output is correct
19 Correct 1514 ms 13264 KB Output is correct
20 Correct 1661 ms 15140 KB Output is correct
21 Execution timed out 2029 ms 19684 KB Time limit exceeded
22 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 604 KB Output is correct
2 Correct 23 ms 684 KB Output is correct
3 Correct 23 ms 604 KB Output is correct
4 Correct 23 ms 604 KB Output is correct
5 Correct 23 ms 600 KB Output is correct
6 Correct 25 ms 604 KB Output is correct
7 Correct 23 ms 600 KB Output is correct
8 Correct 23 ms 600 KB Output is correct
9 Correct 23 ms 604 KB Output is correct
10 Correct 23 ms 604 KB Output is correct
11 Runtime error 22 ms 11084 KB Execution killed with signal 6
12 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 604 KB Output is correct
2 Correct 23 ms 684 KB Output is correct
3 Correct 23 ms 604 KB Output is correct
4 Correct 23 ms 604 KB Output is correct
5 Correct 23 ms 600 KB Output is correct
6 Correct 25 ms 604 KB Output is correct
7 Correct 23 ms 600 KB Output is correct
8 Correct 23 ms 600 KB Output is correct
9 Correct 23 ms 604 KB Output is correct
10 Correct 23 ms 604 KB Output is correct
11 Correct 1611 ms 13252 KB Output is correct
12 Correct 1648 ms 14920 KB Output is correct
13 Correct 1571 ms 14180 KB Output is correct
14 Correct 1616 ms 14196 KB Output is correct
15 Correct 1707 ms 15304 KB Output is correct
16 Correct 1593 ms 14636 KB Output is correct
17 Correct 1651 ms 14608 KB Output is correct
18 Correct 1593 ms 16524 KB Output is correct
19 Correct 1514 ms 13264 KB Output is correct
20 Correct 1661 ms 15140 KB Output is correct
21 Execution timed out 2029 ms 19684 KB Time limit exceeded
22 Halted 0 ms 0 KB -