# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
570536 | 2022-05-30T11:54:58 Z | timreizin | Lamps (JOI19_lamps) | C++17 | 1 ms | 468 KB |
#include <iostream> #include <vector> #include <numeric> #include <cmath> #include <set> #include <array> #include <algorithm> #include <cassert> using namespace std; using ll = long long; int counter(string a, string b) { int last = b.front(), cnt = 0, res = 0; for (int i = 0; i < a.size(); ++i) { if (b[i] != last) { for (int j = i - cnt; j < i; ++j) { if (a[j] != last) { ++res; break; } } cnt = 0; last = b[i]; } ++cnt; } for (int j = (int)a.size() - cnt; j < a.size(); ++j) { if (a[j] != last) { ++res; break; } } return res; } int main() { cin.tie(0)->sync_with_stdio(0); int n; string a, b; cin >> n >> a >> b; int minRes = 1e9; for (int mask = 0; mask < (1 << n); ++mask) { string na = a; int add = 0; for (int i = 0; i < n; ++i) { if (mask & (1 << i)) { if (a[i] == '0') na[i] = '1'; else na[i] = '0'; } if (i > 0) add += !(mask & (1 << i)) && (mask & (1 << (i - 1))); } minRes = min(minRes, counter(na, b) + add); } assert(minRes >= counter(a, b)); cout << minRes; return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 1 ms | 468 KB | Execution killed with signal 6 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 1 ms | 468 KB | Execution killed with signal 6 |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 212 KB | Output is correct |
2 | Runtime error | 1 ms | 468 KB | Execution killed with signal 6 |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Runtime error | 1 ms | 468 KB | Execution killed with signal 6 |
2 | Halted | 0 ms | 0 KB | - |