Здравейте, тъй като имах една задача на предварителния изпит много се озадачих как трябва да чета данни в input-a. Задачата, в общи линии, беше за партии, които участват в Британския Парламент, като входните данни са съответно брой общо вотове, брой партии и за всеки останал ред партии + брой вотове - (примерно
412345
3
Rodeo 78654
JK 90345
FML 111234). Към въпроса ми - как трябва да чета тези данни с gets(), пъро опитах партии + вот да бъдат написани като масив от обекти, но не се получи. Благодаря предварително!
Здравей,
По принцип в условието винаги, където пише “on the first line”, “on the second line” или “on the next line” това значи, че данните идват като стринг и се взимат с едно извикване на gets() функцията. gets() работи така, че всеки път, в който я извикаш, тя взима следващото парче инпут данни от Judge - винаги това, което се намира на следващия ред.
Тоест, в твоя пример, за да вземеш данните
412345
3
Rodeo 78654
JK 90345
FML 111234
ще напишеш един gets() за 412345, втори gets() за 3, трети gets() за Rodeo 78654 и т.н.
Тук ключът се намира в тази тройка, която виждаш на втория ред. Това е бройката на следващите N линии, на които ще дойде някаква инпут информация. Тоест, ако там има 3, ще последват 3 линии, които трябва да вземеш с gets(). Ако е 10, ще са 10. Ако е един милион, ще са един милион. Това означава, че няма как ръчно да пишеш gets() за всяка от тези N линии, защото са твърде много. Така че тук трябва да измислиш подход с някой цикъл, който да се върти N пъти и да взима на всяка итерация с gets() всяка следваща линия от инпут данните, а оттам нататък ти да ги ползваш по някакъв начин за решението на задачата.
Напомням, че в Judge не съществува input array, така че цикъл, който върти до < input.length няма да проработи.
Поздрави,
Зарко