Я практиковал проблемы с 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, который начинается с первого элемента. Следовательно, программа работает правильно, но проблема все еще сохраняется на онлайн-судье.