Time limit: 0.1s
Memory limit: 64MB
Input: ciulini.in
Output: ciulini.out
Cerință
Pe un câmp se află o linie de ciulini (plante), fiecare numerotat de la la (de la stânga la dreapta). La un moment dat, apare un vârtej care ridică ciulinii în aer, unul câte unul, într-o anumită ordine, după regula descrisă în continuare:
- Dacă este impar, primul ciulin ridicat este cel aflat la poziția din mijloc.
- Daca este par, există două elemente centrale și cel din stânga este primul ridicat.
După ridicarea primului ciulin, vârtejul continuă să ridice ciulinii rămași în ordine alternantă: un ciulin din dreapta, cel mai apropiat de poziția ciulinului ridicat anterior, urmat de unul din stânga, de asemenea cel mai apropiat de poziția ciulinului ridicat anterior.
Scrieți un program care să rezolve următoarele două cerințe:
- Programul primește numărul total de ciulini, , apoi determină numerele de ordine ale ciulinilor în ordinea în care îi ridică vârtejul.
- Pentru o poziție dată , programul determină al câtelea este ridicat ciulinul aflat inițial pe această poziție dată.
Date de intrare
Fișierul de intrare ciulini.in
conține:
- Pe prima linie valoarea ( sau ) reprezentând cerința de rezolvat.
- Pe a doua linie se află numărul (dacă cerința este ), respectiv numerele și separate printr-un spațiu (dacă cerința este ).
Date de ieșire
Fișierul de ieșire ciulini.out
va conține:
- dacă , un șir cu n numere distincte de la la , separate prin spațiu, reprezentând răspunsul pentru cerința 1;
- dacă , un număr, reprezentând răspunsul pentru cerința 2;
Restricții și precizări
- Pentru , ;
- Pentru , ;
- Pentru teste in valoare de de puncte, .
Exemplul 1
ciulini.in
1
8
ciulini.out
4 5 3 6 2 7 1 8
Explicație
Pentru , :
- Șirul inițial de ciulini: .
- Ordinea de ridicare: .
Exemplul 2
ciulini.in
2
8 5
ciulini.out
2
Explicație
Pentru , , :
- Șirul inițial de ciulini: .
- Ciulinul de pe poziția este ridicat al doilea.