Submission #172595

#TimeUsernameProblemLanguageResultExecution timeMemory
172595PancakeLamps (JOI19_lamps)C++14
0 / 100
1037 ms14628 KiB
#pragma GCC target("avx2") #pragma GCC optimize("O3") #include <x86intrin.h> #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; template<typename T> using ordered_set = tree <T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; #define F first #define S second #define lb lower_bound #define ub upper_bound #define pb push_back #define pf push_front #define ppb pop_back #define mp make_pair #define bpp __builtin_popcountll #define sqr(x) ((x) * (x)) #define al 0x3F3F3F3F #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define in insert #define ppf pop_front #define endl '\n' //#define int long long typedef unsigned long long ull; typedef long long ll; typedef long double ld; typedef pair <int, int> pii; const int mod = (int)1e9 + 7; const int N = (int)3e5 + 123; const ll inf = (ll)1e18 + 1; const double pi = acos (-1.0); const double eps = 1e-7; const int dx[] = {0, 0, 1, 0, -1}; const int dy[] = {0, 1, 0, -1, 0}; int n, cost[2002][2002][4], dp[2002], pref[2002][3]; char a[N], b[N]; inline int get (int l, int r, int t) { return pref[r][t] - pref[l - 1][t]; } inline void boost () { ios_base :: sync_with_stdio (NULL); cin.tie (NULL), cout.tie (NULL); } inline void Solve () { cin >> n >> a + 1 >> b + 1; for (int i = 1; i <= n; i ++) pref[i][0] = pref[i - 1][0] + (b[i] == '0'), pref[i][1] = pref[i - 1][1] + (b[i] == '1'), dp[i] = mod; for (int i = 1; i <= n; i ++) { int ans1 = 0, last1 = -1; int ans2 = 0, last2 = -1; for (int j = i; j <= n; j ++) { if (a[j] == b[j]) { if (last1 != -1 && get (last1, j, b[j] - '0') == j - last1 + 1) last1 = j; else ans1 ++, last1 = j; } else { if (last2 != -1 && get (last2, j, b[j] - '0') == j - last2 + 1) last2 = j; else ans2 ++, last2 = j; } dp[j] = min (dp[j], dp[i - 1] + 1 + ans1); dp[j] = min (dp[j], dp[i - 1] + ans2); } //cout << dp[i] << ' '; } cout << dp[n]; } main () { // freopen (".in", "r", stdin); // freopen (".out", "w", stdout); boost (); int tt = 1; //cin >> tt; while (tt --) { Solve (); } return 0; }

Compilation message (stderr)

lamp.cpp: In function 'void Solve()':
lamp.cpp:59:18: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
    cin >> n >> a + 1 >> b + 1;
                ~~^~~
lamp.cpp:59:27: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
    cin >> n >> a + 1 >> b + 1;
                         ~~^~~
lamp.cpp: At global scope:
lamp.cpp:85:7: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main () {                                       
       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...