LIGHTS - Lights

Tác giả: ladpro98

Ngôn ngữ: C++

#include <cstdio>

using namespace std;
char a[100000], b[100000];
int n, res;

int main()
{
    scanf("%d\n", &n);
    scanf("%s\n", a); scanf("%s\n", b);
    int i, cnt = 0;
    if (a[0] == '1' && b[0] == '1' && a[1] == '0' && b[1]=='0') {res++; a[0]='0'; b[0]='0';}
    if (a[n-1] == '1' && b[n-1] == '1' && a[n-2] == '0' && b[n-2]=='0') {res++; a[n-1]='0'; b[n-1]='0';}
    for(i=1; i<n-1; i++)
    if (((a[i]!=a[i+1]) && (a[i]!=a[i-1])) &&
    ((b[i]!=b[i+1]) && (b[i]!=b[i-1]))) {
        if (a[i] == '1') a[i] = '0'; else a[i] = '1';
        if (b[i] == '1') b[i] = '0'; else b[i] = '1';
        res++;
    }
    a[n] = '0'; b[n] = '0';
    for(i=0; i<=n; i++) {
        if (a[i] == '1') cnt++;
        if (a[i] == '0') {
            if (cnt > 0) res++;
            cnt = 0;
        }
    }
    for(i=0; i<=n; i++) {
        if (b[i] == '1') cnt++;
        if (b[i] == '0') {
            if (cnt > 0) res++;
            cnt = 0;
        }
    }
    printf("%d", res);
    return 0;
}

Download