187082025-10-31 15:49:22kosztolnirekaRozmárokcpp17Hibás válasz 0/100605ms1344 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";
                res2 += db - 1;
            }
        }

        

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

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask20/10
2Elfogadva20ms564 KiB
3Hibás válasz111ms444 KiB
subtask30/20
4Hibás válasz13ms316 KiB
subtask40/35
5Elfogadva1ms316 KiB
6Hibás válasz3ms316 KiB
7Elfogadva3ms612 KiB
8Elfogadva3ms316 KiB
9Elfogadva2ms508 KiB
10Hibás válasz2ms316 KiB
11Hibás válasz2ms536 KiB
subtask50/35
12Elfogadva1ms316 KiB
13Elfogadva20ms564 KiB
14Hibás válasz111ms444 KiB
15Hibás válasz13ms316 KiB
16Hibás válasz3ms316 KiB
17Elfogadva3ms612 KiB
18Elfogadva3ms316 KiB
19Elfogadva2ms508 KiB
20Hibás válasz2ms316 KiB
21Hibás válasz2ms536 KiB
22Hibás válasz605ms852 KiB
23Elfogadva26ms1344 KiB
24Elfogadva21ms644 KiB
25Elfogadva20ms712 KiB
26Hibás válasz20ms756 KiB
27Hibás válasz20ms992 KiB
28Elfogadva21ms1344 KiB