제출 #1237663

#제출 시각아이디문제언어결과실행 시간메모리
1237663dwuySnake Escaping (JOI18_snake_escaping)C11
컴파일 에러
0 ms0 KiB
/**         - dwuy -

      />    フ
      |  _  _|
      /`ミ _x ノ
     /      |
    /   ヽ   ?
 / ̄|   | | |
 | ( ̄ヽ__ヽ_)_)
 \二つ

**/
#include <bits/stdc++.h>

#define fastIO ios_base::sync_with_stdio(false); cin.tie(NULL)
#define file(a) freopen(a".inp","r",stdin); freopen(a".out", "w",stdout)
#define fi first
#define se second
#define endl "\n"
#define len(s) (int)((s).size())
#define MASK(k)(1LL<<(k))
#define TASK "test"
#define int long long

using namespace std;

typedef tuple<int, int, int> tpiii;
typedef pair<double, double> pdd;
typedef pair<int, int> pii;
typedef long long ll;

const long long OO = 1e18;
const int MOD = 1e9 + 7;
const int INF = 1e9;
const int MX = MASK(20);

int n, q;
string s;
int a[MX];
int f[MX], rf[MX];
// subset, superset;

int32_t main(){
    fastIO;
    //file(TASK);

    cin >> n >> q;
    cin >> s;
    for(int i=0; i<MASK(n); i++) a[i] = s[i] - '0';
    for(int i=0; i<MASK(n); i++) f[i] = rf[i] = a[i];
    for(int i=0; i<n; i++){
        for(int mask=0; mask<MASK(n); mask++){
            mask |= MASK(i);
            f[mask] += f[mask ^ MASK(i)]; // subset
            rf[mask ^ MASK(i)] += rf[mask]; // superset
        }
    }

    while(q--){
        string s;
        cin >> s;
        int b[3] = {0};
        for(char &c: s){
            if(c == '0') b[0]++;
            if(c == '1') b[1]++;
            if(c == '?') b[2]++;
        }
        int x = 0, ans = 0;
        int mn = min({b[0], b[1], b[2]});
        if(mn == b[0]){
            for(char c: s) x = (x << 1) | (c == '1');
            reverse(s.begin(), s.end());
            for(int mask=0; mask<MASK(b[0]); mask++){
                int e = mask;
                int y = x;
                for(int i=0; i<n; i++) if(s[i] == '0'){
                    if(e&1) y |= MASK(i); 
                    e>>=1;
                }
                ans += __builtin_popcount(mask)&1 ? -rf[y] : rf[y];
            }
        }
        else if(mn == b[1]){
            for(char c: s) x = (x << 1) | (c != '0');
            reverse(s.begin(), s.end());
            for(int mask=0; mask<MASK(b[1]); mask++){
                int e = mask;
                int y = x;
                for(int i=0; i<n; i++) if(s[i] == '1'){
                    if(e&1) y ^= MASK(i);
                    e >>= 1;
                }
                ans += __builtin_popcount(mask)&1 ? -f[y] : f[y];
            }
        }
        else{
            for(char c: s) x = (x << 1) | (c == '1');
            reverse(s.begin(), s.end());
            for(int mask=0; mask<MASK(b[2]); mask++){
                int e = mask;
                int y = x;
                for(int i=0; i<n; i++) if(s[i] == '?'){
                    if(e&1) y |= MASK(i);
                    e >>= 1;
                }
                ans += a[y];
            }            
        }
        cout << ans << endl;
    }
    
    return 0;
}

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

snake_escaping.c:13:10: fatal error: bits/stdc++.h: No such file or directory
   13 | #include <bits/stdc++.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.