프로그램 명: koi_mystery
제한시간: 1 초

아래 mystery.c는 입력파일 X를 읽어서 그 안에 기록된 N 개의 정수를 배열 NUM에 저장한 뒤에 이 N 개의 숫자를 어떤 순서에 따라서 화면에 출 력하는 프로그램이다. mystery.c가 X를 입력으로 받아 화면에 출력한 결과를 Y라고 하자.

mystery.c

#include <stdio.h>
int NUM[101] ;
FILE *fin ;
int main(){
   int i, token,N ;
   int count=0, from= 0, value ;

   fin = fopen("X","r");

   fscanf(fin,"%d",&N);

   for(i=0; i < N; i++){
      fscanf(fin,"%d",&token);
      NUM[i]= token;
   } /* end of for */

   printf("%d\n", N ) ;

   value = NUM[ from ] ;
   while( count < N ) {
      while( value == 0 ) {
         from = (from+1)%N;
         value = NUM[ from ] ;
      } /* end of inner while */
      printf("%d ", value ) ;
      count++ ;
      NUM[ from ] = 0 ;
      from = (value +from )% N ;
      value = NUM[ from ] ;
   } /* end of outer while */
   return(0);
} /* end of main */

여러분은 mystery.c에서 생성된 Y를 파일로 받아서 그것의 입력에 해당하는 X를 찾아내는 프로그램을 작성해야 한다.

수행 시간은 1초를 넘을 수 없다.

입력

출력

만일 입력을 생성하는 mystery.c의 입력파일 X가 없는 경우에는 음수인 -1 을 첫 줄에 출력하면 된다.

입출력 예

입력

5
1 2 4 3 5

출력

5
1 2 3 4 5

입력

10
1 2 4 8 6 3 7 5 10 9

출력

10
1 2 3 4 5 6 7 8 9 10

입력

10
5 5 7 4 33 10 9 3 2 6

출력

10
5 7 33 2 6 5 10 9 4 3
출처:koi 30 회(2013 8 2) 전국 본선 중등부 문제 2/4
대회 풀이
[질/답] [제출 현황] [푼 후(1)]
[ 채 점 ] [홈으로]  [뒤 로]