Descrizione del problema
Al porto sono arrivati N container della sostanza chimica di tipo A e N container della sostanza chimica di tipo B. I container sono stati caricati, uno dietro l'altro, su di un treno che ne può contenere 2N+2. Le posizioni dei container sul treno sono numerate da 1 a 2N+2. Il carico è stato fatto in modo che gli N container di tipo A occupino le posizioni da 1 a N, mentre quelli di tipo B da N+1 a 2N; le rimanenti due posizioni 2N+1 e 2N+2 sono vuote.
Per motivi connessi all'utilizzo delle sostanze chimiche nella fabbrica alla quale sono destinate, i container vanno distribuiti sul treno a coppie: ciascun container per la sostanza di tipo A deve essere seguito da uno di tipo B. Occorre quindi che nelle posizioni dispari (1, 3, 5, ..., 2N-1) vadano sistemati esclusivamente i container di tipo A mentre in quelle pari (2, 4, 6, ..., 2N) quelli di tipo B, lasciando libere le ultime due posizioni 2N+1 e 2N+2.
A tal fine, viene impiegata una grossa gru, che preleva due container alla volta, in posizioni consecutive i, i+1, e li sposta nelle uniche due posizioni consecutive j, j+1 libere nel treno (inizialmente, j = 2N+1). Tale operazione è univocamente identificata dalla coppia (i,j), dove entrambe le posizioni i e i+1 devono essere occupate da container mentre j e j+1 devono essere entrambe vuote.
Per esempio, con N = 4, abbiamo inizialmente la configurazione A A A A B B B B * *, dove le due posizioni vuote sono indicate da un asterisco *:
* Il primo spostamento della gru è (4,9) e porta alla configurazione:
A A A * * B B B A B
1 2 3 4 5 6 7 8 9 10
* Il secondo spostamento è (6, 4) e porta alla configurazione:
A A A B B * * B A B
1 2 3 4 5 6 7 8 9 10
* Il terzo spostamento è (2, 6) e porta alla configurazione:
A * * B B A A B A B
1 2 3 4 5 6 7 8 9 10
* Il quarto spostamento è (5,2) e porta alla configurazione:
A B A B * * A B A B
1 2 3 4 5 6 7 8 9 10
* Il quinto e ultimo spostamento è (9,5) e porta alla configurazione desiderata:
A B A B A B A B * *
1 2 3 4 5 6 7 8 9 10
Notare che per N=4 è possibile, con cinque spostamenti, sistemare i 2N container nell'ordine giusto. Scrivere quindi un programma che determini la successione degli spostamenti eseguiti dalla gru per ottenere un analogo risultato nel caso in cui 3 ≤ N ≤ 1000. Si richiede inoltre che il numero K di tali spostamenti non superi il valore 3N.
Dati di input
Il file input.txt è composto da una sola riga, contenente l'intero N che rappresenta il numero di container per ciascuna delle due sostanze.
Dati di output
Il file output.txt è composto da K+1 righe.
La prima riga contiene due interi positivi separati da uno spazio, rispettivamente il numero K di spostamenti operati dalla gru e il numero N di container per ciascuna delle due sostanze
Le righe successive contengono la sequenza di K spostamenti del tipo (i,j), tali che partendo dalla sequenza AAA...ABBB...B**, si arrivi alla sequenza ABABAB...AB** con le regole descritte sopra. Ciascuna delle righe contiene una coppia di interi positivi i e j separati da uno spazio a rappresentare lo spostamento (i,j).
Assunzioni
* 3 ≤ N ≤ 1000,
* 1 ≤ i,j ≤ 2N+1,
* K ≤ 3 N.
Esempi di input/output
File input.txt File output.txt
3
4 3
2 7
6 2
4 6
7 4
File input.txt File output.txt
4
5 4
4 9
6 4
2 6
5 2
9 5
File input.txt File output.txt
5
10 5
2 11
8 2
5 8
10 5
1 10
3 1
5 3
7 5
9 7
11 9
Nota/e
* Un programma che restituisce sempre lo stesso valore, indipendentemente dai dati in input.txt, non totalizza alcun punteggio in aggiunta a quello ottenuto per la sua compilazione.
CHI MI PUO AIUTARE???? se volete e se lo sapete fare.
|