Другие языки программирования и технологии

олимпиадная задача по информатике. Помогите решить пожалуйста

Имя входного файла:dance.in Имя выходного файла:dance.out В школу бальных танцев профессора Падеграса записались n учеников — мальчиков и девочек. Профессор построил их в один ряд, и хочет отобрать из них для первого занятия группу стоящих подряд учеников, в которой количество мальчиков и девочек одинаково. Сколько вариантов выбора есть у профессора? Формат входных данных В первой строке входного файла задано число n (1 ≤ n ≤ 106). Во второй строке задается описание построенного ряда из мальчиков и девочек — строка из n символов a и b (символ a соответствует девочке, а символ b — мальчику). Формат выходных данных В единственной строке выходного файла должно содержаться единственное число — количество вариантов выбора требуемой группы. Примеры dance.in dance.out 3 bab 2 8 abbababa 13
JA
Jeka Axmadiev
322
program Project2;

{$APPTYPE CONSOLE}

var
s: string;
i, j: integer;
kol, kola, kolb, n, k, kolo: integer;
s2: array [1..106] of string;
begin
reset(input, 'dance.in');
rewrite(output, 'dance.out');
readln(n);
readln(s);
kol:=0;
kola:=0;
kolo:=0;
kolb:=0;
for i:=1 to n do
begin
j:=1;
while j+i <= n+1 do
begin
inc(kol);
for k:=1 to i do
s2[kol]:=s2[kol] + s[j+k-1];
inc(j, 1);
end;
end;
for i:=1 to kol do
begin
kola:=0;
kolb:=0;
for j:=1 to length(s2[ i ]) do
if s2[ i, j] = 'a' then inc(kola)
else inc(kolb);
if kola = kolb then inc(kolo);
end;
writeln(kolo);
readln;
close(input);
close(output);
end.

Собственно таким образом решал, просто разбиваем нашу строку на все возможные строки, и каждую в отдельности проверяем на количество мальчиком и девочек
Иван Титов
Иван Титов
3 723
Лучший ответ
а вот на VBA в Excel:
Function proverka(ll)
proverka = False
cnt1 = 0
For kk = 1 To Len(ll)
If Mid(ll, kk, 1) = "a" Then
cnt1 = cnt1 + 1
Else
cnt1 = cnt1 - 1
End If
Next kk
If cnt1 = 0 Then
proverka = True
End If
End Function
Sub ppp()
mm = "abbababa"
ss = 0
nn = 2
For ii = 2 To 8 Step 2
For jj = 1 To 8 - ii + 1
If proverka(Mid(mm, jj, ii)) Then
ss = ss + 1
Cells(nn, 1) = Mid(mm, jj, ii)
nn = nn + 1
End If
Next jj
Next ii
MsgBox (ss)
End Sub

а вот результат работы:

Андрей Борисов
Андрей Борисов
96 203
"В школу бальных танцев профессора Падеграса"? Кандидат бальных наук? :) Фамилия как-бы намекает на нетрадиционную ориентацию. Вам с вашей задачкой в юмор, здесь бесплатно олимпиадные задачи не решают.
паскаль? прикольная задачка. решить можно, но...