187132025-10-31 17:52:38kosztolnirekaRozmárokcpp17Hibás válasz 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";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask20/10
2Hibás válasz20ms564 KiB
3Hibás válasz37ms408 KiB
subtask30/20
4Hibás válasz6ms508 KiB
subtask40/35
5Elfogadva1ms508 KiB
6Hibás válasz3ms316 KiB
7Hibás válasz2ms508 KiB
8Hibás válasz3ms316 KiB
9Hibás válasz2ms316 KiB
10Hibás válasz2ms316 KiB
11Hibás válasz2ms316 KiB
subtask50/35
12Elfogadva1ms508 KiB
13Hibás válasz20ms564 KiB
14Hibás válasz37ms408 KiB
15Hibás válasz6ms508 KiB
16Hibás válasz3ms316 KiB
17Hibás válasz2ms508 KiB
18Hibás válasz3ms316 KiB
19Hibás válasz2ms316 KiB
20Hibás válasz2ms316 KiB
21Hibás válasz2ms316 KiB
22Hibás válasz43ms316 KiB
23Hibás válasz25ms792 KiB
24Hibás válasz21ms704 KiB
25Elfogadva20ms708 KiB
26Hibás válasz20ms564 KiB
27Hibás válasz20ms564 KiB
28Elfogadva20ms564 KiB