Submission #230169

#TimeUsernameProblemLanguageResultExecution timeMemory
230169DS007Lamps (JOI19_lamps)C++14
4 / 100
74 ms7304 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define find(l, r) (1 + (r - l) / 2) int n, n_; string a, b, a_, b_; int toggle(int p) { while (p != n_ && a_[p] != 2 && a_[p] != b_[p]) p++; return p; } int solve(int lp) { while (lp != n_ && a_[lp] == b_[lp]) lp++; if (lp == n_) return 0; if (lp == n_ - 1) return 1; int last = n_; for (int p = lp; p < n_; p++) { if (a_[p] == b_[p]) return find(lp, p) + solve(p + 1); if (a_[p] == '2') last = n_; else if (last == n_) last = p; else if (b_[p] != b_[lp] && last < p - 1) return find(lp, last) + 1 + solve(toggle(last)); } return last == lp ? 1 : find(lp, n_); } int solveTestCase(int test) { cin >> n >> a >> b; for (int i = 0; i < n; n_++) { set<char> s; int temp = i; while (temp != n && b[temp] == b[i]) s.insert(a[temp++]); b_ += b[i]; a_ += s.size() == 2 ? '2' : *s.begin(); i = temp; } //cout << a_ << endl << b_ << endl; cout << solve(0); } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int test = 1; // cin >> test; for (int i = 1; i <= test; i++) solveTestCase(i); }

Compilation message (stderr)

lamp.cpp: In function 'long long int solveTestCase(long long int)':
lamp.cpp:55:1: warning: no return statement in function returning non-void [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...