제출 #1183905

#제출 시각아이디문제언어결과실행 시간메모리
1183905lmaobruhSnake Escaping (JOI18_snake_escaping)C++20
100 / 100
423 ms21968 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define ii pair<int,int> #define all(x) x.begin(),x.end() #define fo(i, a, b) for (int i=(a),_b=(int)(b);i<=_b;++i) #define fd(i, a, b) for (int i=(a),_b=(int)(b);i>=_b;--i) #define umax(a, b) a=max(a, b) #define umin(a, b) a=min(a, b) #define ve vector #define vi ve<int> #define vl ve<ll> #define vvi ve<vi> #define ar array #define fi first #define se second const int N = 5e6+5; int L, q, f[N], sos[N], super[N]; string s; void sol(int tc) { cin >> L >> q >> s; fo(i,0,(1<<L)-1) { f[i] = sos[i] = super[i] = s[i]-'0'; } fo(i,0,L-1) fo(j,0,(1<<L)-1) { if (j>>i&1) sos[j] += sos[j^(1<<i)]; else super[j] += super[j^(1<<i)]; } while (q--) { string t; cin >> t; reverse(all(t)); int p0 = 0, p1 = 0, pm = 0; fo(i,0,L-1) { if (t[i]=='0') p0 |= (1<<i); else if (t[i]=='1') p1 |= (1<<i); else pm |= (1<<i); } int ans = 0; if (__builtin_popcount(pm)<=6) { for (int x = pm; ; x = (x-1)&pm) { ans += f[x|p1]; if (x==0) break; } } else if (__builtin_popcount(p0)<=6) { for (int x = p0; ; x = (x-1)&p0) { ans += (__builtin_parity(x)?1:-1)*super[x|p1]; if (x==0) break; } } else { for (int x = p1; ; x = (x-1)&p1) { ans += (__builtin_parity(x)?1:-1)*sos[x|pm]; if (x==0) break; } } cout << abs(ans) << '\n'; } } signed main() { cin.tie(0) -> sync_with_stdio(0); if (fopen("A.inp", "r")) freopen("A.inp", "r", stdin); int tc = 1; // cin >> tc; fo(i,1,tc) sol(i); }

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

snake_escaping.cpp: In function 'int main()':
snake_escaping.cpp:63:37: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   63 |     if (fopen("A.inp", "r")) freopen("A.inp", "r", stdin);
      |                              ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
#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...