Почему код для ZCO12001 работает в IDE, но получает WA для всех тестовых случаев после подачи его на онлайн-судью? - PullRequest
0 голосов
/ 09 марта 2020

Я практиковал проблемы с ZCO на CodeChef. Я решал проблему согласованных скобок (ссылка: https://www.codechef.com/ZCOPRAC/problems/ZCO12001). Ниже приведен код решения, которое я придумал: -

#include <bits/stdc++.h>
using namespace std;

bool sortbysecdesc(const pair<int,int> &a,
                   const pair<int,int> &b)
{
        return a.second > b.second;
}

int main()
{
    int n;
    cin >> n;

    vector <int> seq;

    int temp;
    for(int i = 0; i < n; i++)
        {
            cin >> temp;
            seq.push_back(temp);
        }

    vector < pair <int,int> > depths;
    vector < pair <int,int> > symbols;

    int i = 0;
    int dpos, pos, j, c, s, d;
    while(i < n)
    {
        c = 0;
        s = 0;
        pos = i;
        while(seq[i] == 1)
        {
            c++;
            s++;
            i++;
        }
        d = c;
        dpos = i-1;
        j = i;
        while(c != 0)
        {
            if(c > d)
            {
                d = c;
                dpos = j-1;
            }
            if(seq[j] == 2)
            {
                s++;
                c--;
            }
            else
            {
                s++;
                c++;
            }
            j++;
        }
        depths.push_back(make_pair(dpos+1, d));
        symbols.push_back(make_pair(pos+1, s));

        i = j;
    }

    sort(depths.begin(), depths.end(), sortbysecdesc);
    sort(symbols.begin(), symbols.end(), sortbysecdesc);

    cout << depths[0].second << " " << depths[0].first << " " << symbols[0].second << " " << symbols[0].first << "\n";

    return 0;
}

Проблема в том, что он работает в среде IDE, но получает WA для двух (из пятнадцати) тестовых случаев на судье, тогда как Я проверил его вручную с помощью тестового примера и еще нескольких примеров, в которых он отлично работает. Тогда в чем проблема? Есть ли какой-либо недостаток в логике c или во входе / выходе?

Ниже приведены результаты вместе с примерами тестовых случаев: -

4
1 1 2 2 
2 2 4 1

10
1 2 1 2 1 1 1 2 2 2
3 6 6 5

Примечание: - Я просто сосредоточив внимание на этих двух, хотя я тестировал программу на большем количестве тестов.

Первый вывод легче понять. 4 дает количество символов в последовательности, за которой следует сама последовательность, где 1 обозначает (а 2 обозначает). Глубина вложения этой последовательности равна 2 (см. Ссылку для глубины вложения), которая происходит во втором элементе (с использованием индексации на основе 1), а максимальное количество символов между двумя согласованными скобками (включительно) (см. Ссылку) равно 4, который начинается с первого элемента. Следовательно, программа работает правильно, но проблема все еще сохраняется на онлайн-судье.

...