Submission #371167

#TimeUsernameProblemLanguageResultExecution timeMemory
371167CodePlatinaLamps (JOI19_lamps)C++17
100 / 100
96 ms27964 KiB
#include <iostream>
#include <algorithm>
#include <vector>
#include <utility>
#include <tuple>
#include <string>
#define pii pair<int, int>
#define pll pair<long long, long long>
#define piii pair<int, pii>
#define plll pair<long long, pll>
#define tiii tuple<int, int, int>
#define tiiii tuple<int, int, int, int>
#define tlll tuple<long long, long long, long long>
#define tllll tuple<long long, long long, long long, long long>
#define ff first
#define ss second
#define ee ss.ff
#define rr ss.ss
#define DEBUG
using namespace std;

const int INF = (int)1e9;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n; cin >> n;
    string s, t; cin >> s >> t;

    int dp[n + 1][6]{};
    for(int i = 1; i < 6; ++i) dp[0][i] = INF;
    for(int i = 0; i < n; ++i)
    {
        for(int j = 0; j < 6; ++j)
        {
            if(j == 0 && s[i] == t[i] || j == 1 && t[i] == '0' || j == 2 && t[i] == '1' ||
               j == 3 && s[i] != t[i] || j == 4 && t[i] == '1' || j == 5 && t[i] == '0')
            {
                dp[i + 1][j] = INF;
                for(int k = 0; k < 6; ++k)
                {
                    int tmp = dp[i][k];
                    if(j % 3 != 0 && j % 3 != k % 3) ++tmp;
                    if(j >= 3 && k < 3) ++tmp;
                    dp[i + 1][j] = min(dp[i + 1][j], tmp);
                }
            }
            else dp[i + 1][j] = INF;
        }
    }

    int ans = INF;
    for(int j = 0; j < 6; ++j) ans = min(ans, dp[n][j]);
    cout << ans;
}

Compilation message (stderr)

lamp.cpp: In function 'int main()':
lamp.cpp:38:23: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   38 |             if(j == 0 && s[i] == t[i] || j == 1 && t[i] == '0' || j == 2 && t[i] == '1' ||
lamp.cpp:38:74: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   38 |             if(j == 0 && s[i] == t[i] || j == 1 && t[i] == '0' || j == 2 && t[i] == '1' ||
      |                                                                   ~~~~~~~^~~~~~~~~~~~~~
lamp.cpp:39:23: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   39 |                j == 3 && s[i] != t[i] || j == 4 && t[i] == '1' || j == 5 && t[i] == '0')
lamp.cpp:39:49: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   39 |                j == 3 && s[i] != t[i] || j == 4 && t[i] == '1' || j == 5 && t[i] == '0')
      |                                          ~~~~~~~^~~~~~~~~~~~~~
lamp.cpp:39:74: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   39 |                j == 3 && s[i] != t[i] || j == 4 && t[i] == '1' || j == 5 && t[i] == '0')
      |                                                                   ~~~~~~~^~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...