Приближается очередная олимпиада по программированию, и товарищи A и B решили устроить совместную тренировку. Они выбрали n задач и договорились, что тренировка продлится t минут.Для каждой задачи известно время si (i = 1; 2; : : : ; n), которое потребуется на её решение. Уровень подготовки у товарищей A и B одинаковый, и если товарищ A решает некоторую задачу за время s, то и товарищ B решает эту задачу за это же время s.Товарищ A начал решать задачи с первой и будет решать их подряд, двигаясь от первой к последней и не пропуская ни одной. Товарищ B начал решать задачи с последней и тоже будетрешать их подряд, двигаясь от последней к первой и не пропуская ни одной.Ваша же задача — определить, сколько задач решат в течение тренировки товарищи A и B.В качестве ответа выведите два целых числа: количество задач, которые решит товарищ A, и через пробел — количество задач, которые решит товарищ B.

Формат входного файла

В первой строке содержатся через пробел два целых числа — n (1 n 100) и t (1 t 1000).
Во второй строке содержатся n целых чисел s1; s2; : : : sn (1 si 1000; i = 1; 2; : : : ; n), также отделённые друг от друга пробелом.

Формат выходного файла

В единственной строке выходного файла содержатся два целых числа через пробел — количество задач, которые решит товарищ A, и количество задач, которые решит товарищ B соответственно.

На Паскаль :)

1
Язык программирования - Паскаль?
Угу :)

Ответы и объяснения

Лучший Ответ!
2013-11-09T13:13:02+04:00
Program Zadacha;
Const n = 1; t = 2; min = 1; nMax = 100; tMax = 1000;
Var text: Text;
vars: Array [min..2] Of Integer;
s: Array Of Integer;
i, an, bn, at, bt: Integer;
BeginAssign(text, 'd:\input.txt');
Reset(text);
i := 1;
While Not Eof(text) Do
Begin
If i > 2 Then
Read(text, s[i - 2])
Else
Read(text, vars[i]);
i := i + 1;
If i = 3 Then
SetLength(s, vars[n] + 1);
If (i - 2) > vars[n] Then
Break;
End;
Close(text);
If ((vars[n] < 1) Or (vars[n] > nMax)) Or ((vars[t] < 1) Or (vars[t] > tMax)) Then
WriteLn('Неверные входные данные! Завершение работы программы.')
Else
Begin
For i := 1 To vars[n] Do
Begin
at := at + s[i];
If (at <= vars[t]) And ((an + bn) < vars[n]) Then
an := an + 1;
bt := bt + s[a[n] - i + 1];
If (bt <= vars[t]) And ((an + bn) < vars[n]) Then
bn := bn + 1;
End;
Assign(text, 'd:\output.txt');
Rewrite(text);Write(text, an, ' ');
Write(text, bn, ' ');
Close(text);
End;
ReadLn;
End.

Уже было, смотрите список других заданий время от времени :)