187102025-10-31 16:00:46kosztolnirekaRozmárokcpp17Wrong answer 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";
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Wrong answer1ms316 KiB
subtask20/10
2Accepted23ms564 KiB
3Wrong answer86ms432 KiB
subtask30/20
4Wrong answer10ms316 KiB
subtask40/35
5Wrong answer1ms500 KiB
6Accepted2ms332 KiB
7Accepted3ms316 KiB
8Accepted3ms316 KiB
9Accepted2ms316 KiB
10Wrong answer2ms316 KiB
11Wrong answer2ms316 KiB
subtask50/35
12Wrong answer1ms500 KiB
13Accepted23ms564 KiB
14Wrong answer86ms432 KiB
15Wrong answer10ms316 KiB
16Accepted2ms332 KiB
17Accepted3ms316 KiB
18Accepted3ms316 KiB
19Accepted2ms316 KiB
20Wrong answer2ms316 KiB
21Wrong answer2ms316 KiB
22Wrong answer421ms852 KiB
23Accepted25ms1344 KiB
24Accepted20ms708 KiB
25Accepted19ms712 KiB
26Accepted19ms764 KiB
27Accepted21ms1076 KiB
28Accepted20ms1200 KiB