1055 - Compar
Ana şi Bogdan au inventat jocul “Compar”. Ana scrie pe tablă o secvenţă formată din N
numere naturale distincte cuprinse între 1
şi N
, apoi compară fiecare două numere învecinate din secvenţă scriind între ele semnul <
sau semnul >
, după caz.
De exemplu, dacă secvenţa de pe tablă este 6 4 2 1 3 5
, după compararea elementelor învecinate şi inserarea semnelor în secvenţă, Ana obţine:
6>4>2>1<3<5
După aceea Ana şterge cele N
elemente ale secvenţei şi păstrează numai semnele, astfel:
>>><<
La final, Ana îi arată lui Bogdan şirul semnelor şi îi cere să reconstituie secvenţa de numere naturale scrisă iniţial pe tablă.
Cerinţă[edit | edit source]
Cunoscând şirul semnelor construit de Ana, scrieţi un program care să îl ajute pe Bogdan să reconstituie secvenţa de numere naturale distincte scrisă iniţial pe tablă.
Date de intrare[edit | edit source]
Fișierul de intrare compar.in
conține pe prima linie o secvenţă de caractere din mulţimea {'<', '>'}
, reprezentând şirul semnelor obţinut de Ana după compararea elementelor vecine din secvenţa iniţială.
Date de ieșire[edit | edit source]
Fișierul de ieșire compar.out
va conține pe prima linie numărul natural N
, reprezentând lungimea secvenţei iniţiale. Pe a doua linie vor fi scrise N
numere naturale distincte cuprinse între 1
şi N
, separate prin câte un spaţiu, reprezentând elementele secvenţei iniţiale, reconstituită pe baza semnelor din fişierul de intrare.
Restricții și precizări[edit | edit source]
1 < N ≤ 100000
- Dacă există mai multe soluţii, afişaţi oricare dintre acestea.
- Pentru determinarea corectă a lungimii secvenţei se acordă 10% din punctajul pe test.
Exemplu:[edit | edit source]
compar.in
>>><<
compar.out
6 6 4 2 1 3
Explicație[edit | edit source]
6>4>2>1<3<5
Există şi alte soluţii posibile, aceasta este doar una dintre ele.
Încărcare soluție[edit | edit source]
Lipește codul aici[edit | edit source]
<syntaxhighlight lang="python" line="1"> import os
s = [ for i in range(100000)]
def main():
fin = open("compar.intxt", "r") fout = open("compar.outtxt", "w")
s = fin.readline().strip() N = len(s) + 1 fout.write(str(N) + "\n") maxx = N minn = 1 for i in range(N): if s[i] == '<': fout.write(str(minn) + " ") minn += 1 else: fout.write(str(maxx) + " ") maxx -= 1 fout.close()
if __name__ == "__main__":
main()
</syntaxhighlight>