126422024-12-27 14:19:01PappMatyasTakaros Sorozat (80 pont)cpp17Hibás válasz 58/808ms696 KiB
#include <iostream>

using namespace std;

int main()
{
    long long 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++;
        }
    }
    long long so = 0;
    while(so < n && c[so] == '0')
    {
        so++;
    }

    long long si = n-1;
    while(si >= 0 && c[si] == '1')
    {
        si--;
    }
    si = n - si - 1;
    os-=so;
    is-=si;
    if(os < is)
    {
        cout << os << endl;
    }
    else
    {
       cout << is << endl;
    }
    long long cor;
    long long 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 - 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]++;
                }
            }
            for(int i = so - 1; 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base58/80
1Elfogadva0/01ms320 KiB
2Hibás válasz0/08ms568 KiB
3Elfogadva4/41ms320 KiB
4Elfogadva4/41ms500 KiB
5Elfogadva4/41ms320 KiB
6Elfogadva4/41ms320 KiB
7Elfogadva4/41ms320 KiB
8Elfogadva4/41ms320 KiB
9Elfogadva4/41ms508 KiB
10Elfogadva4/41ms320 KiB
11Részben helyes2/41ms320 KiB
12Részben helyes2/41ms320 KiB
13Elfogadva4/43ms492 KiB
14Részben helyes2/44ms568 KiB
15Elfogadva4/47ms504 KiB
16Elfogadva4/46ms684 KiB
17Részben helyes2/43ms692 KiB
18Részben helyes2/47ms496 KiB
19Elfogadva4/46ms568 KiB
20Hibás válasz0/48ms568 KiB
21Hibás válasz0/48ms696 KiB
22Hibás válasz0/48ms568 KiB