187062025-10-31 15:37:14kosztolnirekaRozmárokcpp17Hibás válasz 0/100606ms1340 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 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] = '-';
                    
                    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];
                }
            }
            if (res2 < res1)
            {
                res2 = res1;
            }
        }

        

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

}

RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz1ms316 KiB
subtask20/10
2Elfogadva19ms756 KiB
3Hibás válasz111ms316 KiB
subtask30/20
4Hibás válasz13ms316 KiB
subtask40/35
5Hibás válasz1ms500 KiB
6Elfogadva3ms316 KiB
7Elfogadva3ms508 KiB
8Elfogadva3ms316 KiB
9Elfogadva2ms316 KiB
10Hibás válasz2ms316 KiB
11Hibás válasz2ms316 KiB
subtask50/35
12Hibás válasz1ms500 KiB
13Elfogadva19ms756 KiB
14Hibás válasz111ms316 KiB
15Hibás válasz13ms316 KiB
16Elfogadva3ms316 KiB
17Elfogadva3ms508 KiB
18Elfogadva3ms316 KiB
19Elfogadva2ms316 KiB
20Hibás válasz2ms316 KiB
21Hibás válasz2ms316 KiB
22Hibás válasz606ms908 KiB
23Elfogadva26ms1340 KiB
24Elfogadva20ms708 KiB
25Elfogadva20ms708 KiB
26Elfogadva20ms720 KiB
27Elfogadva20ms1068 KiB
28Elfogadva21ms1200 KiB