Решение задачи "Анализ текстового документа" с Codeforces

Без пояснения   Просмотров: 14


Современные текстовые редакторы обычно показывают некоторую информацию для текущего редактируемого документа — например, количество слов, количество страниц или количество знаков.

В этой задаче вам предстоит реализовать похожую функциональность.

Задана строка, состоящая только из:

прописных и строчных букв английского алфавита,
символов подчёркивания (они используются в качестве разделителей),
круглых скобок (как открывающих, так и закрывающих).
Гарантируется, что каждая открывающая скобка имеет парную закрывающую, идущую следом. Аналогично, каждая закрывающая скобка имеет парную открывающую, которая расположена до неё. Для каждой пары соответствующих скобок верно, что между ними нет каких-либо других скобок. Иными словами, каждая скобка в строке входит в пару «открывающая-закрывающая», и такие пары не вкладываются друг в друга.

Например, допустимой строкой является: «_Hello_Vasya(and_Petya)__bye_(and_OK)».

Словом называется нерасширяемая последовательность подряд идущих букв, то есть последовательность букв, такая что слева и справа от неё находится скобка или символ подчёркивания, или соответствующий символ отсутствует. Пример выше содержит семь слов: «Hello», «Vasya», «and», «Petya», «bye», «and» и «OK». Напишите программу, которая найдет:

длину самого длинного слова вне скобок (выведите 0, если слов вне скобок нет),
количество слов внутри скобок (выведите 0, если слов внутри скобок нет).

Код

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

int n,a,b,c,d;
string s;
bool f,w;

int main()
{
	cin>>n>>s;
	for(int i=0;i<n;i++)
	{
		if(s[i]=='(')
		{
			f=1;
			c=0;
		}
		else if(s[i]==')')
		{
			f=0;
			w=0;
		}
		else
		{
			if(f)
			{
				if(w)
				{
					if(s[i]=='_')
						w=0;
				}
				else
				{
					if(s[i]!='_')
					{
						w=1;
						b++;
					}
				}
			}
			else
			{
				if(s[i]=='_')
					c=0;
				else
					c++;
				a=max(a,c);
			}
		}
	}
	cout<<a<<' '<<b;
	return 0;
}

         

 Администратор Photo Автор: Администратор


Отправить решение задачи
Чтобы отправить решение вам нужно войти в систему или зарегистрироваться

Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться