Submission #792458

# Submission time Handle Problem Language Result Execution time Memory
792458 2023-07-25T05:09:17 Z Cookie Snake Escaping (JOI18_snake_escaping) C++14
22 / 100
431 ms 9848 KB
#include<bits/stdc++.h>
#include<fstream>
#pragma GCC optimize("Ofast,O3,unroll-loops")
#pragma GCC target("avx2")
using namespace std;
//ifstream fin("FEEDING.INP");
//ofstream fout("FEEDING.OUT");
#define sz(a) (int)a.size()
#define ll long long
#define pb push_back
#define forr(i, a, b) for(int i = a; i < b; i++)
#define dorr(i, a, b) for(int i = a; i >= b; i--)
#define ld long double
#define vt vector
#include<fstream>
#define fi first
#define se second
#define pll pair<ll, ll>
#define pii pair<int, int>
const ll mxn = 3e5 + 5, base = 972663749;
const ll mod = 911382323, mxv = 1e9 + 1, inf = 2e9;
int l, q;
int big[(1 << 20)], small[(1 << 20)];
string s;
signed main()
{
     ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); 
    cin >> l >> q;
    cin >> s;
    for(int i = 0; i < (1 << l); i++){
        
        big[i] = (s[i] - '0'); small[i] = (s[i] - '0');
    }
    for(int i = 0; i < l; i++){
        for(int j = 0; j < (1 << l); j++){
            if(j & (1 << i))small[j] += small[j ^ (1 << i)];
            else big[j] += big[j ^ (1 << i)];
        }
    }
    if(l == 20 && q > 10000)return(0);
    char c;
    while(q--){
       
       
        int zero = 0, one = 0, que = 0;
        for(int i = 0; i < l; i++){
            cin >> c;
            if(c == '0')zero += (1 << (l - i - 1));
            else if(c == '1')one += (1 << (l - i - 1));
            else que += (1 << (l - i - 1));
        }
        int ans = 0;
        if(__builtin_popcount(que) <= 6){
            int mask = one;
            for(int j = que;; j = (j - 1) & que){
                //cout << (mask | j) << " ";
                ans += (s[mask | j] - '0');
                if(j == 0)break;
            }
        }else if(__builtin_popcount(one) <= 6){
            int mask = que;
            for(int j = one;; j = (j - 1) & one){
                if((__builtin_popcount(one) - __builtin_popcount(j)) & 1)ans -= small[mask | j];
                else ans += small[mask | j];
                if(j == 0)break;
            }
        }else{
            int mask = one;
            for(int j = zero;; j = (j - 1) & zero){
                if(__builtin_popcount(j) & 1)ans -= big[mask | j];
                else ans += big[mask | j];
            }
        }
        cout << ans << "\n";
    }
    return(0);
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 336 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 336 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 236 ms 4696 KB Output is correct
12 Correct 247 ms 4320 KB Output is correct
13 Correct 258 ms 3620 KB Output is correct
14 Correct 241 ms 3712 KB Output is correct
15 Correct 267 ms 4696 KB Output is correct
16 Correct 256 ms 3784 KB Output is correct
17 Correct 284 ms 3848 KB Output is correct
18 Correct 153 ms 5620 KB Output is correct
19 Correct 263 ms 2684 KB Output is correct
20 Correct 249 ms 4364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 336 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 236 ms 4696 KB Output is correct
12 Correct 247 ms 4320 KB Output is correct
13 Correct 258 ms 3620 KB Output is correct
14 Correct 241 ms 3712 KB Output is correct
15 Correct 267 ms 4696 KB Output is correct
16 Correct 256 ms 3784 KB Output is correct
17 Correct 284 ms 3848 KB Output is correct
18 Correct 153 ms 5620 KB Output is correct
19 Correct 263 ms 2684 KB Output is correct
20 Correct 249 ms 4364 KB Output is correct
21 Correct 352 ms 4692 KB Output is correct
22 Correct 291 ms 4904 KB Output is correct
23 Correct 328 ms 3784 KB Output is correct
24 Correct 322 ms 3560 KB Output is correct
25 Correct 262 ms 5680 KB Output is correct
26 Correct 353 ms 4112 KB Output is correct
27 Correct 332 ms 4136 KB Output is correct
28 Correct 192 ms 6764 KB Output is correct
29 Correct 343 ms 2736 KB Output is correct
30 Correct 431 ms 4892 KB Output is correct
31 Correct 361 ms 4780 KB Output is correct
32 Correct 319 ms 4812 KB Output is correct
33 Correct 313 ms 3684 KB Output is correct
34 Correct 317 ms 3768 KB Output is correct
35 Correct 333 ms 4164 KB Output is correct
36 Correct 170 ms 2708 KB Output is correct
37 Correct 302 ms 4796 KB Output is correct
38 Correct 278 ms 2716 KB Output is correct
39 Correct 293 ms 3964 KB Output is correct
40 Correct 300 ms 3768 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 336 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Incorrect 18 ms 9848 KB Output isn't correct
12 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 336 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 1 ms 336 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 236 ms 4696 KB Output is correct
12 Correct 247 ms 4320 KB Output is correct
13 Correct 258 ms 3620 KB Output is correct
14 Correct 241 ms 3712 KB Output is correct
15 Correct 267 ms 4696 KB Output is correct
16 Correct 256 ms 3784 KB Output is correct
17 Correct 284 ms 3848 KB Output is correct
18 Correct 153 ms 5620 KB Output is correct
19 Correct 263 ms 2684 KB Output is correct
20 Correct 249 ms 4364 KB Output is correct
21 Correct 352 ms 4692 KB Output is correct
22 Correct 291 ms 4904 KB Output is correct
23 Correct 328 ms 3784 KB Output is correct
24 Correct 322 ms 3560 KB Output is correct
25 Correct 262 ms 5680 KB Output is correct
26 Correct 353 ms 4112 KB Output is correct
27 Correct 332 ms 4136 KB Output is correct
28 Correct 192 ms 6764 KB Output is correct
29 Correct 343 ms 2736 KB Output is correct
30 Correct 431 ms 4892 KB Output is correct
31 Correct 361 ms 4780 KB Output is correct
32 Correct 319 ms 4812 KB Output is correct
33 Correct 313 ms 3684 KB Output is correct
34 Correct 317 ms 3768 KB Output is correct
35 Correct 333 ms 4164 KB Output is correct
36 Correct 170 ms 2708 KB Output is correct
37 Correct 302 ms 4796 KB Output is correct
38 Correct 278 ms 2716 KB Output is correct
39 Correct 293 ms 3964 KB Output is correct
40 Correct 300 ms 3768 KB Output is correct
41 Incorrect 18 ms 9848 KB Output isn't correct
42 Halted 0 ms 0 KB -