126082024-12-26 18:41:24PappMatyasTakaros Sorozat (80 pont)cpp17Wrong answer 54/80500ms684 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, sans;
    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';
        }
        sans = -1;
        while(sans != ans[s])
        {
            sans = ans[s];
            for(int i = so; i < n - si - 3; 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]++;
                }
            }
        }
        sans = -1;
        while(sans != ans[s])
        {
            sans = ans[s];
            for(int i = so; i < n - si - 3; 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
base54/80
1Accepted0/01ms320 KiB
2Wrong answer0/013ms568 KiB
3Accepted4/41ms500 KiB
4Accepted4/41ms320 KiB
5Accepted4/41ms320 KiB
6Accepted4/41ms320 KiB
7Accepted4/41ms508 KiB
8Accepted4/41ms320 KiB
9Accepted4/41ms320 KiB
10Accepted4/41ms320 KiB
11Accepted4/41ms560 KiB
12Partially correct2/41ms320 KiB
13Accepted4/43ms568 KiB
14Time limit exceeded0/4500ms568 KiB
15Accepted4/48ms684 KiB
16Accepted4/48ms568 KiB
17Partially correct2/43ms568 KiB
18Time limit exceeded0/4499ms568 KiB
19Partially correct2/48ms568 KiB
20Wrong answer0/410ms568 KiB
21Wrong answer0/410ms568 KiB
22Wrong answer0/412ms568 KiB