187102025-10-31 16:00:46kosztolnirekaRozmárokcpp17Hibás válasz 0/100421ms1344 KiB
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    /*int N, K, M;
    cin >> N;
    cin >> K;
    cin >> M;
    bool result;
    if (N * K >= M)
    {
        cout << "YES";
    }
    else {
        cout << "NO";
    }*/

    int db;
    int N;
    cin >> N;
    int meddig;
    vector<int> idok;
    for (int i = 0; i < N; i++)
    {
        int res1 = 0;
        int res2 = 0;
        int db = 0;
        int M;
        cin >> M;
        vector<char>list(M);
        for (int i = 0; i < M; i++)
        {
            cin >> list[i];
        }
        if (list[0] == '.')
        {
            res1 = 1;
        }
        for (int j = 0; j < list.size(); j++)
        {

            if (list[j] == '-')
            {
                if (j + 1 < list.size())
                {
                    if (list[j + 1] == '.')
                    {
                        res1++;
                    }
                }
            }
        }


        if (res1 == 0)
        {
            res2 = 0;
        }
        else
        {
            int ido = 0;
            res2 = res1;
            for (int j = 0; j < list.size(); j++)
            {
                if (list[j] == '.')
                {

                    ido = 0;
                    meddig = j;

                    while (meddig < list.size() && list[meddig] == '.')
                    {
                        meddig++;
                    }


                    int mennyi = meddig - (j);
                    //cout << "j: " << j << "\n";
                    //cout << "mennyi: " << mennyi << "\n";
                    //list[(j + mennyi - 1) / 2] = '-';

                    if (mennyi != 1)
                    {
                        db++;
                    }

                    int resj = j;
                    //cout << "resj: " << resj << "\n";

                    int resmeddig = resj + mennyi - 1;
                    //cout << "resmeddig: " << resmeddig << "\n";


                    int resmost = resj + mennyi / 2;
                    //cout << "resmost: " << resmost << "\n";


                    if (resmost - resj > resmeddig - resmost)
                    {
                        ido = resmost - resj + 1;
                    }
                    else
                    {
                        ido = resmeddig - resmost + 1;
                    }


                    idok.push_back(ido);
                    //cout << "ido: " << ido << "\n";
                    //cout << "\n";

                    j = meddig;

                }
            }

            res2 = idok[0];
            for (int k = 1; k < idok.size(); k++)
            {
                if (idok[k] > res2)
                {
                    res2 = idok[k];
                }
            }
            //res2 += db - 1;
            if (res2 < res1)
            {
                res2 = res1;
            }
            else
            {
                /*cout << "db: " << db << "\n";
                cout << "res2: " << res2 << "\n";*/
                if (db < 0)
                {
                    res2 += db - 1;
                }
            }
        }



        cout << res1 << ' ' << res2 << "\n";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz1ms316 KiB
subtask20/10
2Elfogadva23ms564 KiB
3Hibás válasz86ms432 KiB
subtask30/20
4Hibás válasz10ms316 KiB
subtask40/35
5Hibás válasz1ms500 KiB
6Elfogadva2ms332 KiB
7Elfogadva3ms316 KiB
8Elfogadva3ms316 KiB
9Elfogadva2ms316 KiB
10Hibás válasz2ms316 KiB
11Hibás válasz2ms316 KiB
subtask50/35
12Hibás válasz1ms500 KiB
13Elfogadva23ms564 KiB
14Hibás válasz86ms432 KiB
15Hibás válasz10ms316 KiB
16Elfogadva2ms332 KiB
17Elfogadva3ms316 KiB
18Elfogadva3ms316 KiB
19Elfogadva2ms316 KiB
20Hibás válasz2ms316 KiB
21Hibás válasz2ms316 KiB
22Hibás válasz421ms852 KiB
23Elfogadva25ms1344 KiB
24Elfogadva20ms708 KiB
25Elfogadva19ms712 KiB
26Elfogadva19ms764 KiB
27Elfogadva21ms1076 KiB
28Elfogadva20ms1200 KiB