187072025-10-31 15:47:50kosztolnirekaRozmárokcpp17Wrong answer 0/100418ms1200 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] == '.') 
                {
                    db++;
                    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] = '-';
                    
                    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";
                res2 += db - 1;
            }
        }

        

        cout << res1 << ' ' << res2 << "\n";
    }

}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
subtask20/10
2Accepted21ms564 KiB
3Wrong answer87ms496 KiB
subtask30/20
4Wrong answer9ms316 KiB
subtask40/35
5Accepted1ms500 KiB
6Wrong answer3ms316 KiB
7Accepted3ms316 KiB
8Accepted3ms316 KiB
9Accepted2ms316 KiB
10Wrong answer2ms316 KiB
11Wrong answer2ms316 KiB
subtask50/35
12Accepted1ms500 KiB
13Accepted21ms564 KiB
14Wrong answer87ms496 KiB
15Wrong answer9ms316 KiB
16Wrong answer3ms316 KiB
17Accepted3ms316 KiB
18Accepted3ms316 KiB
19Accepted2ms316 KiB
20Wrong answer2ms316 KiB
21Wrong answer2ms316 KiB
22Wrong answer418ms944 KiB
23Accepted25ms1200 KiB
24Accepted21ms812 KiB
25Accepted20ms564 KiB
26Wrong answer23ms564 KiB
27Wrong answer21ms956 KiB
28Accepted21ms1200 KiB