187122025-10-31 17:27:48kosztolnirekaRozmárokcpp17Wrong answer 10/10043ms708 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] == '.')
                {
                    idok.clear();

                    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;



                    /*int szam = j + mennyi - 1;
                    if (mennyi % 2 == 1) {
                        ido = (mennyi + 1) / 2;
                    }
                    else
                    {
                        ido = (mennyi / 2) + 1;
                    }
                    idok.push_back(ido);*/

                }
            }

            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";
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask210/10
2Accepted20ms564 KiB
3Accepted37ms316 KiB
subtask30/20
4Wrong answer6ms500 KiB
subtask40/35
5Accepted1ms316 KiB
6Wrong answer2ms512 KiB
7Accepted3ms316 KiB
8Accepted3ms500 KiB
9Accepted2ms508 KiB
10Wrong answer2ms316 KiB
11Wrong answer2ms316 KiB
subtask50/35
12Accepted1ms316 KiB
13Accepted20ms564 KiB
14Accepted37ms316 KiB
15Wrong answer6ms500 KiB
16Wrong answer2ms512 KiB
17Accepted3ms316 KiB
18Accepted3ms500 KiB
19Accepted2ms508 KiB
20Wrong answer2ms316 KiB
21Wrong answer2ms316 KiB
22Wrong answer43ms316 KiB
23Accepted25ms564 KiB
24Accepted21ms520 KiB
25Accepted20ms708 KiB
26Wrong answer20ms564 KiB
27Wrong answer20ms568 KiB
28Accepted20ms564 KiB