187072025-10-31 15:47:50kosztolnirekaRozmárokcpp17Hibás válasz 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";
    }

}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
subtask20/10
2Elfogadva21ms564 KiB
3Hibás válasz87ms496 KiB
subtask30/20
4Hibás válasz9ms316 KiB
subtask40/35
5Elfogadva1ms500 KiB
6Hibás válasz3ms316 KiB
7Elfogadva3ms316 KiB
8Elfogadva3ms316 KiB
9Elfogadva2ms316 KiB
10Hibás válasz2ms316 KiB
11Hibás válasz2ms316 KiB
subtask50/35
12Elfogadva1ms500 KiB
13Elfogadva21ms564 KiB
14Hibás válasz87ms496 KiB
15Hibás válasz9ms316 KiB
16Hibás válasz3ms316 KiB
17Elfogadva3ms316 KiB
18Elfogadva3ms316 KiB
19Elfogadva2ms316 KiB
20Hibás válasz2ms316 KiB
21Hibás válasz2ms316 KiB
22Hibás válasz418ms944 KiB
23Elfogadva25ms1200 KiB
24Elfogadva21ms812 KiB
25Elfogadva20ms564 KiB
26Hibás válasz23ms564 KiB
27Hibás válasz21ms956 KiB
28Elfogadva21ms1200 KiB