126072024-12-26 18:37:09PappMatyasTakaros Sorozat (80 pont)cpp17Wrong answer 58/808ms676 KiB
#include <iostream>

using namespace std;

int main()
{
    int n, is = 0, os = 0;
    char c[200000], ci[200000][2];
    cin >> n;
    cin >> c;
    for(int i = 0; i < n; i++)
    {
        ci[i][0] = c[i];
        ci[i][1] = c[i];
    }
    for(int i = 0; i < n; i++)
    {
        if(c[i] == '0')
        {
            os++;
        }
        else
        {
            is++;
        }
    }
    int so = 0;
    while(c[so] == '0')
    {
        so++;
    }

    int si = n-1;
    while(c[si] == '1')
    {
        si--;
    }
    si = n - si - 1;
    os-=so;
    is-=si;
    if(os < is)
    {
        cout << os << endl;
    }
    else
    {
       cout << is << endl;
    }
    int cor;
    int ans[2] = {0};
    char sc, osc;
    for(int s = 0; s <= 1; s++)
    {
        if(s == 0)
        {
            sc = '0';
            osc = '1';
        }
        else
        {
            sc ='1';
            osc = '0';
        }
        for(int i = so - 1; i < n - si - 2; i++)
        {
            cor = 0;
            for(int f = 0; f < 4; f++)
            {
                if(ci[i + f][s] == sc)
                {
                    cor++;
                }
            }
            if(cor == 3)
            {
                for(int f = 0; f < 4; f++)
                {
                    if(ci[i + f][s] == sc)
                    {
                        ci[i + f][s] = osc;
                    }
                }
                ans[s]++;
            }
        }
        for(int i = so - 1; i < n - si - 2; i++)
        {
            cor = 0;
            for(int f = 0; f < 4; f++)
            {
                if(ci[i + f][s] == sc)
                {
                    cor++;
                }
            }
            if(cor == 2)
            {
                for(int f = 0; f < 4; f++)
                {
                    if(ci[i + f][s] == sc)
                    {
                        ci[i + f][s] = osc;
                    }
                }
                ans[s]++;
            }
        }
        for(int i = so; i < n-si; i++)
        {
            if(ci[i][s] == sc)
            {
                ans[s]++;
            }
        }
    }
    if(ans[0] > ans[1])
    {
        cout << ans[1];
    }
    else
    {
        cout << ans[0];
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base58/80
1Accepted0/01ms320 KiB
2Wrong answer0/08ms568 KiB
3Accepted4/41ms320 KiB
4Accepted4/41ms320 KiB
5Accepted4/41ms320 KiB
6Accepted4/41ms320 KiB
7Accepted4/41ms320 KiB
8Accepted4/41ms320 KiB
9Accepted4/41ms320 KiB
10Accepted4/41ms320 KiB
11Partially correct2/41ms320 KiB
12Partially correct2/41ms320 KiB
13Accepted4/43ms568 KiB
14Partially correct2/44ms568 KiB
15Accepted4/46ms568 KiB
16Accepted4/46ms568 KiB
17Partially correct2/43ms568 KiB
18Partially correct2/46ms568 KiB
19Accepted4/46ms676 KiB
20Wrong answer0/48ms636 KiB
21Wrong answer0/48ms568 KiB
22Wrong answer0/48ms568 KiB