ConcursC++17

poligon

Poligonul de tragere este un teren special amenajat în cadrul căruia se fac exerciţii şi se execută trageri cu arme de foc. Comandantul plasează câte o ţintă în toate punctele aflate la distanţele RiR_i, 1≤i≤n1 \leq i \leq n faţă de punctul de tragere (origine) şi care au coordonatele carteziene numai numere naturale nenule.

Specialiştii în armament români au creat recent o nouă armă sub forma unui tun laser care îşi lansează razele pe o traiectorie rectilinie şi are capacitatea de a distruge toate ţintele aflate pe direcţia de tragere.

Cerință

Ştiind că tunul laser se găseşte în originea sistemului de coordonate, să se scrie un program care să determine:

  • numărul de ţinte
  • numărul minim de lovituri de tun laser necesare pentru a distruge toate ţintele precum
  • numărul de ţinte doborâte la fiecare lovitură

Figura 1 din enunțul original al problemei poligon.Figura 1 din enunțul original al problemei poligon.Mărește schema ↗

Spre exemplu, dacă avem n=6n = 6 distanţe (5,7,10,13,15,175, 7, 10, 13, 15, 17) pentru care se încearcă plasarea ţintelor, atunci în poligon se vor plasa 1010 ţinte, va fi nevoie de 66 lovituri pentru a doborî toate ţintele iar la fiecare lovitură se vor doborî respectiv 1,1,3,3,1,11, 1, 3, 3, 1, 1 ţinte.

Date de intrare

Fişierul de intrare poligon.in conţine pe prima linie numărul nn de distanţe la care vor fi plasate ţinte, iar pe a doua linie nn numere naturale nenule distincte separate printr-un spaţiu, ce reprezintă aceste distanţe.

Date de ieșire

Fişierul de ieşire poligon.out va conţine 33 linii. Pe prima linie se va scrie numărul ţintelor plasate în poligon. Pe a doua linie se va scrie numărul minim de lovituri de tun laser cu care se pot doborî toate ţintele, iar pe a treia linie se va scrie numărul de ţinte doborâte la fiecare lovitură, separate printr-un spaţiu, în ordinea crescătoare a unghiurilor direcţiilor cu axa OXOX.

Restricții și precizări

  • 1≤n≤1 0001 \leq n \leq 1 \ 000
  • 1≤Ri≤1 0001 \leq R_i \leq 1 \ 000
  • pentru fiecare set de date de intrare, în poligon va exista cel puţin o ţintă
#PunctajRestricții
12020%pentru determinarea corectă a numărului de ţinte
24040%determinarea corectă a numărului minim de lovituri
34040%determinarea corectă a numărului de ţinte doborâte la fiecare lovitură

Exemplu

poligon.in

6
5 10 15 7 13 17

poligon.out

10
6
1 1 3 3 1 1

Explicație

Avem 66 distante: 5,10,15,7,13,175, 10, 15, 7, 13, 17

În poligon vor fi plasate 1010 ţinte (punctele negre marcate pe figură) care pot fi doborâte din 66 lovituri iar la fiecare lovitură se vor doborî câte 1,1,3,3,1,11, 1, 3, 3, 1, 1 ţinte.

Sursă și autori

ONI 2011, clasele 9. Cheșcă Ciprian.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑