제출 #1286908

#제출 시각아이디문제언어결과실행 시간메모리
1286908trinm01Lamps (JOI19_lamps)C++20
6 / 100
163 ms327680 KiB
// #pragma GCC optimize("O3") // #pragma GCC optimization("Ofast,unroll-loops") // #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; #define int long long #define ll long long #define FOR(i, l, r) for (int i = (l); i <= (r); i++) #define FOD(i, r, l) for (int i = (r); i >= (l); i--) #define fi first #define se second #define pii pair<int, int> const ll mod = 1e9 + 7; const int MAXN = 1e6 + 5; const ll oo = 1e18 + 7; const int base = 10; int n; int a[MAXN], b[MAXN]; int f[MAXN][4][4][4]; int dp(int i, int t1, int t2, int t3){ int ok=1; int k=a[i-1]; if(t1==1){ k=0; } if(t1==2){ k=1; } if(t1==3){ k=1-k; } if(t2==1){ k=0; } if(t2==2){ k=1; } if(t2==3){ k=1-k; } if(t3==1){ k=0; } if(t3==2){ k=1; } if(t3==3){ k=1-k; } // cout << i << ' ' << a[i-1] << ' ' << t1 << ' ' << t2 << ' ' << t3 << ' ' << k << ' ' << b[i-1] << '\n'; if(k!=b[i-1]){ ok=0; } if(i>n && ok){ // cout << a[i-1] << ' ' << t1 << ' ' << t2 << ' ' << t3 << ' ' << k << ' ' << b[i-1] << '\n'; return 0; } if(f[i][t1][t2][t3]!=-1){ return f[i][t1][t2][t3]; } int ans=oo; if(t3!=0){ ans=min(ans, dp(i, t1, t2, 0)); } if(t2!=0){ ans=min(ans, dp(i, t1, t3, 0)); } if(t1!=0){ ans=min(ans, dp(i, t2, t3, 0)); } if(ok && i+1<=n+1){ ans=min(ans, dp(i+1, t1, t2, t3)); if(t1==0){ FOR(j, 1, 3){ ans=min(ans, dp(i+1, j, t2, t3)+1); } } else if(t2==0){ FOR(j, 1, 3){ ans=min(ans, dp(i+1, t1, j, t3)+1); } } else if(t3==0){ FOR(j, 1, 3){ ans=min(ans, dp(i+1, t1, t2, j)+1); } } } return f[i][t1][t2][t3]=ans; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); // freopen("test.txt", "r", stdin); // freopen("o2.out", "w", stdout); if(fopen(".inp", "r")){ freopen(".inp", "r", stdin); freopen(".out", "w", stdout); } cin >> n; FOR(i, 1, n){ char c; cin >> c; a[i]=(int)(c-'0'); } FOR(i, 1, n){ char c; cin >> c; b[i]=(int)(c-'0'); } FOR(i, 0, n+1){ FOR(t1, 0, 3){ FOR(t2, 0, 3){ FOR(t3, 0, 3){ f[i][t1][t2][t3]=-1; } } } } cout << dp(1, 0, 0, 0); return 0; }

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

lamp.cpp: In function 'int main()':
lamp.cpp:112:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  112 |         freopen(".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~
lamp.cpp:113:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
  113 |         freopen(".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...