Simulation - OJI 2019 VI | maxim

This was the problem page during the contest. Access the current page here.
Time limit: 0.5s Memory limit: 8MB Input: maxim.in Output: maxim.outPoints by default: 10p

Dintr-un șir format din NN cifre, numerotate de la 11 la NN, Ionel ia exact MM cifre aflate pe poziții consecutive. El lipește cifrele luate sau le amestecă și apoi le lipește pentru a obține cu ele un număr cât mai mare.

Cerință

Cunoscând N,MN, M și cele NN cifre din șir, să se determine:

  1. cel mai mare număr care se poate obține din primele MM dintre cele NN cifre date;
  2. de unde va lua Ionel MM cifre aflate pe poziții consecutive pentru a obține un număr maxim; dacă sunt mai multe poziții corespunzătoare unui număr maxim, alegerea se va face astfel încât numărul format din cifrele rămase, în ordinea în care erau, să fie cât mai mare posibil; dacă și în acest caz există mai multe soluții, se alege poziția maximă.

Date de intrare

Din fișierul maxim.in se citesc: PP de pe prima linie, reprezentând cerința problemei (11 sau 22), NN și MM de pe a doua linie, despărțite printr-un spațiu, cu semnificația din enunț, iar de pe linia a treia, se citesc cele NN cifre, despărțite prin câte un spațiu.

Date de ieșire

În fișierul maxim.out se scrie:

  • pentru P=1P = 1: numărul maxim care se poate obține cu ajutorul primelor MM cifre dintre cele NN date, fără spații între cifrele numărului;
  • pentru P=2P = 2: un număr reprezentând poziția cerută.

Restricții și precizări

  • M,NM, N numere naturale, 1N500 0001 \leq N \leq 500 \ 000, 1M1 0001 \leq M \leq 1 \ 000, M<NM < N
  • Cele NN valori de pe linia a treia sunt numere naturale între 00 și 99
  • Secvența de NN cifre poate să înceapă cu cel mult M1M-1 cifre nule.
  • 3030 de puncte se vor obține cu rezolvarea cerinței 11, iar 6060 de puncte se vor obține cu rezolvarea cerinței 22.
  • Se acordă 1010p din oficiu, cu condiția ca programul să compileze și execuția lui să se termine normal, în timpul alocat.
  • Pentru 5050% dintre teste, N<1000N < 1000 și M<10M < 10.

Exemplul 1

maxim.in

1
10 3
7 2 8 1 0 0 4 7 8 1

maxim.out

872

Explicație

Se rezolvă cerința 11. Cu primele 33 cifre dintre cele 1010 cifre date se pot forma numerele: 728,782,287,278,827,872728, 782, 287, 278, 827, 872, cel mai mare fiind 872872

Exemplul 2

maxim.in

2
10 3
7 2 8 1 0 0 4 7 8 1

maxim.out

7

Explicație

Se rezolvă cerința 22. Alegând cifrele începând de la poziția a 77-a (cifrele 4,74, 7 și 88), se va forma numărul 874874, care este cel mai mare posibil.

Exemplul 3

maxim.in

2
10 2
0 7 2 8 4 8 7 1 7 8

maxim.out

9

Explicație

Se rezolvă cerința 22. Alegând cifrele începând de la poziția a 66-a (cifrele 88 și 77) sau cifrele începând cu poziția a 99-a (77 și 88) va forma numărul 8787 care este cel mai mare număr de două cifre consecutive. Dar, eliminând cifrele de pe pozițiile 66 și 77, secvența rămasă este 0728417807284178 (cu valoarea 72841787284178), pe când eliminând cifrele de pe pozițiile 99 și 1010 numărul rămas este 72848717284871 care este mai mare.

Exemplul 4

maxim.in

2
10 2
5 9 6 9 6 8 2 6 6 8

maxim.out

4

Explicație

Se rezolvă cerința 22. Alegând cifrele de pe pozițiile 2,32,3 sau 3,43,4 sau 4,54,5 se va forma numărul 9696 care este cel mai mare număr de două cifre consecutive posibil. Dar, eliminând cifrele de pe pozițiile 22 și 33, numărul rămas este 5968266859682668, eliminând cifrele de pe pozițiile 33 și 44 numărul rămas este 5968266859682668, eliminând cifrele de pe pozițiile 44 și 55 numărul rămas este 5968266859682668. Se poate afișa poziția 22 sau 33 sau 44, dar se va alege poziția maximă, 44.

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