struguri

Time limit: 0.2s
Memory limit: 64MB
Input: struguri.in
Output: struguri.out

Istorie: “În 29 septembrie 1474 Ștefan cel Mare a cerut ajutor papei Sixtus al IV-lea în vederea apropiatului război care bătea la ușă”. Apropiindu-se toamna și fiind în criză de timp din cauza războiului iminent, Ștefan a hotărât să supravegheze personal recoltarea strugurilor de la viile Huși, din apropiere de Vaslui, vie la care Ștefan ținea foarte mult. Strugurii recoltați au fost depozitați în grămezi la marginea fiecărui rând de vie. Se cunoaște, pentru fiecare dintre cele NN rânduri, cantitatea (în ocale) recoltată de pe rândul respectiv. Ștefan a hotărât ca transportul strugurilor la cramă să se facă cu ajutorul unor căruțe, o căruță putând transporta orice cantitate de struguri. Recolta fiind foarte bogată, transportul se va face în una sau mai multe ture. Ștefan, care supraveghea atent activitatea, a constatat că la fiecare tură dispune de exact atâtea căruțe câte grămezi au mai rămas de transportat. Ștefan era un conducător corect astfel încât a hotărât ca toate căruțele disponibile la un moment dat să transporte aceeași cantitate de struguri.

Cerințe

  1. Determinați cea mai lungă secvență de grămezi pe care le pot transporta cele NN căruțe în prima tură.
  2. Determinați o modalitate de transport a tuturor strugurilor la cramă, conform cerințelor lui Ștefan.

Date de intrare

Fișierul de intrare struguri.in conține pe prima linie două numere naturale CC și NN, separate printr-un spațiu, reprezentând cerința (11 sau 22) și numărul de grămezi de struguri care trebuie transportate. Linia a doua conține NN numere naturale nenule, separate prin câte un spațiu, reprezentând cele NN cantități de struguri.

Date de ieșire

Dacă cerința este 11, în fișierul de ieșire struguri.out se vor afișa pe prima linie trei numere naturale, separate prin câte un spațiu, reprezentând lungimea secvenței de grămezi, numărul de ordine al primei grămezi din secvență, respectiv numărul de ordine al ultimei grămezi din secvență.
Dacă cerința este 22, în fișierul de ieșire se vor afișa: pe prima linie numărul TT de ture; fiecare dintre următoarele TT linii are aceeași structură:

  • primele trei valori reprezintă:
    • numărul de căruțe care transportă struguri în tura respectivă
    • cantitatea de struguri pe care o transportă fiecare căruță
    • numărul de grămezi transportate;
  • următoarele valori de pe linia respectivă reprezintă numerele de ordine ale grămezilor transportate în tura respectivă; valorile vor fi afișate ordonate crescător și separate prin câte un spațiu.

Restricții și precizări

  • 1N20 0001\leq N \leq 20 \ 000;
  • Cantitățile sunt mai mici ca 100 000100 \ 000;
  • Pentru ambele cerințe orice soluție corectă este acceptată;
  • Pentru cerința 11 se acordă 4646 puncte, iar pentru cerința 22 se acordă 5454 puncte.
# Punctaj Restricții
1 12 1N101 \leq N \leq 10, din care 5 puncte se acordă pentru cerința 1
2 30 11N10011 \leq N \leq 100, din care 12 puncte se acordă pentru cerința 1
3 14 101N1 000101 \leq N \leq 1 \ 000, din care 8 puncte se acordă pentru cerința 1
4 27 1 001N10 0001 \ 001 \leq N \leq 10 \ 000, din care 21 de puncte se acordă pentru cerința 1
5 17 10 001N20 00010 \ 001 \leq N \leq 20 \ 000

Exemplul 1

struguri.in

1 10
2 1 3 4 5 10 6 8 9 7

struguri.out

5 6 10

Explicație

De la grămada a șasea până la a zecea sunt în total 4040 ocale; fiecare dintre cele 1010 căruțe va transporta câte 44 ocale.

Exemplul 2

struguri.in

2 5
7 8 11 2 5

struguri.out

3
5 4 3 1 2 5
2 1 1 4
1 11 1 3

Explicație

O soluție posibilă poate fi următoarea:
Tura 1: există 55 grămezi, deci sunt 55 căruțe (fiecare căruță transportă câte 44 oca din 33 grămezi (1 2 51 \ 2 \ 5))
Tura 2: au mai rămas 22 grămezi deci sunt 22 căruțe, fiecare transportă câte 11 oca din grămada 44
Tura 3: a mai rămas o grămadă deci dispunem de 11 căruță, ce va transporta 1111 ocale din grămada 33
O altă soluție corectă poate fi descrisă în fișierul de ieșire astfel:

2
5 3 2 1 2 
3 6 3 3 4 5 

În această situație sunt 2 ture, în prima se transportă cu fiecare din cele 55 căruțe, câte 33 ocale, din grămezile 11 și 22. La a două tură se vor folosi 33 căruțe care transportă fiecare câte 66 ocale din grămezile 33, 44 și 55

Problem info

ID: 543

Editors:

Author:

Source: ONI 2023 VIII: Problema 3

Tags:

ONI 2023 VIII

Log in or sign up to be able to send submissions!