187132025-10-31 17:52:38kosztolnirekaRozmárokcpp17Wrong answer 0/10043ms792 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;

            //cout << "res2: " << res2 << "\n";
            //cout << "res1: " << res1 << "\n";
            if (res2 < res1)
            {
                res2 = res1;
            }
            if (list[list.size() - 1] == '.' && list[list.size() - 2] == '.' /*&& list[list.size() - 3] == '-'*/)
            {
                //cout << "true";
                res2 += 1;
            }
            //else
            //{
            //    //cout << "db: " << db << "\n";
            //    //cout << "res2: " << res2 << "\n";
            //    /*if (db > 0)
            //    {
            //        res2 += db - 1;
            //    }*/

            //    if (list[list.size() - 1] == '.' && list[list.size() - 2] == '.' && list[list.size() - 3] == '-')
            //    {
            //        cout << "true";
            //        res2 += 1;
            //    }
            //    cout << "false";
            //}
        }



        cout << res1 << ' ' << res2 << "\n";
    }
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask20/10
2Wrong answer20ms564 KiB
3Wrong answer37ms408 KiB
subtask30/20
4Wrong answer6ms508 KiB
subtask40/35
5Accepted1ms508 KiB
6Wrong answer3ms316 KiB
7Wrong answer2ms508 KiB
8Wrong answer3ms316 KiB
9Wrong answer2ms316 KiB
10Wrong answer2ms316 KiB
11Wrong answer2ms316 KiB
subtask50/35
12Accepted1ms508 KiB
13Wrong answer20ms564 KiB
14Wrong answer37ms408 KiB
15Wrong answer6ms508 KiB
16Wrong answer3ms316 KiB
17Wrong answer2ms508 KiB
18Wrong answer3ms316 KiB
19Wrong answer2ms316 KiB
20Wrong answer2ms316 KiB
21Wrong answer2ms316 KiB
22Wrong answer43ms316 KiB
23Wrong answer25ms792 KiB
24Wrong answer21ms704 KiB
25Accepted20ms708 KiB
26Wrong answer20ms564 KiB
27Wrong answer20ms564 KiB
28Accepted20ms564 KiB