187122025-10-31 17:27:48kosztolnirekaRozmárokcpp17Hibás válasz 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";
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask210/10
2Elfogadva20ms564 KiB
3Elfogadva37ms316 KiB
subtask30/20
4Hibás válasz6ms500 KiB
subtask40/35
5Elfogadva1ms316 KiB
6Hibás válasz2ms512 KiB
7Elfogadva3ms316 KiB
8Elfogadva3ms500 KiB
9Elfogadva2ms508 KiB
10Hibás válasz2ms316 KiB
11Hibás válasz2ms316 KiB
subtask50/35
12Elfogadva1ms316 KiB
13Elfogadva20ms564 KiB
14Elfogadva37ms316 KiB
15Hibás válasz6ms500 KiB
16Hibás válasz2ms512 KiB
17Elfogadva3ms316 KiB
18Elfogadva3ms500 KiB
19Elfogadva2ms508 KiB
20Hibás válasz2ms316 KiB
21Hibás válasz2ms316 KiB
22Hibás válasz43ms316 KiB
23Elfogadva25ms564 KiB
24Elfogadva21ms520 KiB
25Elfogadva20ms708 KiB
26Hibás válasz20ms564 KiB
27Hibás válasz20ms568 KiB
28Elfogadva20ms564 KiB