답안 #937654

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
937654 2024-03-04T10:15:13 Z wojciech_domin2 Lamps (JOI19_lamps) C++14
0 / 100
1 ms 496 KB
#include <bits/stdc++.h>
#define pb push_back
#define ins insert
#define fi first
#define se second
#define debug(x) cout<<#x<<" = "<<x<<"\n";

using namespace std;
using ll = long long;
using ld = long double;

template <typename H, typename T> 
ostream& operator<<(ostream& os, pair<H, T> m){
	return os <<"("<< m.fi<<", "<<m.se<<")";
}
 
template <typename H> 
ostream& operator<<(ostream& os, vector<H> V){
	os<<"{";
	for(int i=0; i<V.size(); i++){
		if(i)os<<" ";
		os<<V[i];
	}
	os<<"}";
	return os;
}

const int MAX_N = 20;
char A[MAX_N];
char B[MAX_N];
char D[MAX_N];

bitset<MAX_N> a,b,c;

int main(){
    int N;
    cin>>N;
    for(int i = 1; i <= N; i++){
        cin>>A[i];
    }
    for(int i = 1; i <= N; i++){
        cin>>B[i];
    }
 
    a[1] = int(A[1]^'0');
    b[1] = int(B[1]^'0');
    for(int i = 2; i <= N; i++){
        if(A[i-1] == A[i] && B[i-1] == B[i]){
            //pomiń
        }else{
            a[i] = int(A[i]^'0');
            b[i] = int(B[i]^'0');
        }
    }
    c=a^b;
    //cout<<c<<"\n";
    for(int i = 0; i < MAX_N; i++){
        D[i]='*';
    }
    for(int i = 1; i < MAX_N-1; i++){
        if(c[i]) D[i] = 'x';
        if(c[i] && !c[i-1] && !c[i+1] && (D[i] == 'x' || D[i] == '*')){
            int j = i;
            while(j >= 1){
                if(B[j] == B[i]){
                    D[j] = B[i];
                }else{
                    break;
                }
                j--;
            }
            j=i;
            while(j <= N){
                if(B[j] == B[i]){
                    D[j] = B[i];
                }else{
                    break;
                }
                j++;
            }
        }
    }

    int odp = 0;
    int ixow = 0;
    int cnt = 0;
    char lit = '*';
    for(int i = 1; i < MAX_N; i++){
        if(D[i] != lit){
            if(D[i] == '*'){
                odp+=(cnt+2-ixow)/2;
                cnt = 0;
                ixow = 0;
            }
            if(D[i] == 'x'){
                ixow++;
                odp++;
                odp+=(cnt+2-ixow)/2;
                cnt = 0;
                ixow = 1;
            }
            if(D[i] == '0'){
                cnt++;
            }
            if(D[i] == '1'){
                cnt++;
            }
            lit = D[i];
        }
    }

    cout<<odp<<"\n";


    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Incorrect 1 ms 348 KB Output isn't correct
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Incorrect 1 ms 348 KB Output isn't correct
15 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 496 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Runtime error 1 ms 348 KB Execution killed with signal 11
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 1 ms 348 KB Output is correct
10 Correct 1 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Incorrect 1 ms 348 KB Output isn't correct
15 Halted 0 ms 0 KB -