Ciulini

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 11 la nn (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ă nn este impar, primul ciulin ridicat este cel aflat la poziția din mijloc.
  • Daca nn 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:

  1. Programul primește numărul total de ciulini, nn, apoi determină numerele de ordine ale ciulinilor în ordinea în care îi ridică vârtejul.
  2. Pentru o poziție dată kk, 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 cc (11 sau 22) reprezentând cerința de rezolvat.
  • Pe a doua linie se află numărul nn (dacă cerința este 11), respectiv numerele nn și kk separate printr-un spațiu (dacă cerința este 22).

Date de ieșire

Fișierul de ieșire ciulini.out va conține:

  • dacă c=1c=1, un șir cu n numere distincte de la 11 la nn, separate prin spațiu, reprezentând răspunsul pentru cerința 1;
  • dacă c=2c=2, un număr, reprezentând răspunsul pentru cerința 2;

Restricții și precizări

  • Pentru c=1c = 1, 1n100 0001 \leq n \leq 100 \ 000;
  • Pentru c=2c = 2, 1kn1 000 000 0001 \leq k \leq n \leq 1 \ 000 \ 000 \ 000;
  • Pentru teste in valoare de 2323 de puncte, c=1c = 1.

Exemplul 1

ciulini.in

1 
8

ciulini.out

4 5 3 6 2 7 1 8

Explicație

Pentru c=1c = 1, n=8n = 8:

  • Șirul inițial de ciulini: 1,2,3,4,5,6,7,81, 2, 3, 4, 5, 6, 7, 8.
  • Ordinea de ridicare: 4,5,3,6,2,7,1,84, 5, 3, 6, 2, 7, 1, 8.

Exemplul 2

ciulini.in

2 
8 5

ciulini.out

2

Explicație

Pentru c=2c = 2, n=8n = 8, k=5k = 5:

  • Șirul inițial de ciulini: 1,2,3,4,5,6,7,81, 2, 3, 4, 5, 6, 7, 8.
  • Ciulinul de pe poziția k=5k = 5 este ridicat al doilea.

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