Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

인하대 프로그래밍 경진대회 - 문제

2,127 views

Published on

인하대학교 주최의 프로그래밍 경진대회 문제 입니다.

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

인하대 프로그래밍 경진대회 - 문제

  1. 1. 제4회 인하대학교 프로그래밍 경시대회 주 관 주 최 후 원 2018년 5월 26일 문제 A부터 L까지, 총 16 페이지
  2. 2. - 1 - Problem A. 멀티탭 충분하니? (1000ms,512MB) 문제 설명 오늘은 NAVER D2 캠퍼스에서 CTP 스터디 하는날!!! 스터디 장소가 인하대학교 강의실에서 NAVER D2 캠퍼스로 바뀌었기 때문에 멀티탭 부장 준호는 스터디 전에 미리 멀티탭을 셋팅 해야 한다. CTP는 모든 사람이 사용할만큼 충분한 멀티탭을 가지고 있다. 종류는 3구부터 8구까지 다양하게 있다. 모든 사람들은 노트북만 가져오기 때문에 멀티탭 1구를 무조건 사용한다. 1구를 초과해선 안된다. CTP에는 멀티탭에 2개이상 연속으로 코드를 꽂으면 안되는 특별한 규칙이 있다. 준호는 미리 계산을 해서 모두가 코드를 꽂을 수 있게 멀티탭을 K개 챙겨 갔다. 하지만 준호는 수학과에서 수학을 못해 전과했기 때문에 가끔 멀티탭을 적게 가지고 올 때가 있다. 수학을 더 잘하는 여러분이 멀티탭을 충분히 챙겨왔는지 준호에게 알려주자! 입력 설명 입력의 첫째 줄에 스터디에 온 학생의 수 N(1<=N<=100)명 콘센트의 수 K(1<=K<=100)가 주어진다. 이후 두번째 줄에 각 멀티탭의 구의 수 A[i](3<=A[i]<=8) 가 주어진다. 출력 설명 모든 사람이 멀티탭에 코드를 꽂을 수 있는경우 “YES” 아니라면 “NO”를 출력한다. 예제 입력 / 출력 1 Standard Input Standard Output 3 5 3 4 5 6 7 YES 예제 입력 / 출력 2 Standard Input Standard Output 6 2 3 4 NO
  3. 3. - 2 - Problem B. 헬멧과 조끼 (1000ms,512MB) 문제 설명 배틀그라운드라는 게임에서는 머리와 몸을 보호하기 위해 헬멧과 조끼를 입는다. 맵에는 다양한 헬멧과 조끼가 있으며 각각 방어력을 갖고 있다. 또한 최대 1개의 헬멧과 조끼밖에 입지 못한다. 경수는 배틀그라운드에서 승리하고 싶기 때문에 시간이 걸리더라도 최고의 헬멧과 조끼를 주워서 최대의 방어력을 얻고 싶어한다. 맵에 존재하는 조끼와 헬멧의 방어력이 주어졌을 때 경수를 도와 경수가 얻을 수 있는 방어력의 최대 값을 구해주자. 입력 설명 입력의 첫째 줄에 맵에 존재하는 헬멧의 개수 N(N은 1000이하의 자연수)과 조끼의 개수 M(M은 1000이하의 자연수)이 주어진다. 둘째 줄에 각 헬멧의 방어력 h[i] (h[i]는 10억 이하의 자연수)가 N개 만큼 주어지며, 셋째 줄에 각 조끼의 방어력 a[i] (a[i]는 10억 이하의 자연수)가 M개 만큼 주 어진다. 출력 설명 경수가 얻을 수 있는 방어력의 최대 값을 출력한다. 예제 입력 / 출력 1 Standard Input Standard Output 5 7 10 60 15 20 7 1 2 3 7 5 1 3 67 예제 입력 / 출력 2 Standard Input Standard Output 2 3 1 1000000000 20 18 1000000000 2000000000
  4. 4. - 3 - Problem C. Calculate!2 (1000ms,512MB) 문제 설명 제 3회 IUPC의 Calculate! 에서 교정이는 인규가 질문한 모든 논리연산에 대한 정답을 말하였다. 그 후 1년 뒤 제 4회 IUPC가 열리게 되었고, 인규는 이번에는 교정이를 꼭 골탕 먹이겠다는 생각을 갖고 교정이가 빠르게 대답을 못할만한 어려운 논리연산 문제를 준비했다. 인규가 준비한 문제는 다음과 같다. - 정점이 N(<=100,000)개인 트리가 주어진다. 루트는 항상 1번 정점이다. (트리란 N개의 정 점과 N-1개의 간선으로 이루어 진 사이클이 존재하지 않는 하나의 컴포넌트를 가지는 연결 그래프이다) - 각 정점은 가중치 D(0<=D<=10,000)를 가진다. - M(<=500,000)개의 질의가 주어진다. - 1 x 꼴로 주어지는 질의에는 정점 x를 포함한 x의 모든 자손들의 가중치를 전부 XOR한 값 을 출력. - 2 x y 꼴로 주어지는 질의에는 정점 x를 포함한 x의 모든 자손들의 가중치에 각각 y(0<=y<=10,000)를 XOR을 함. - 인규의 문제에 대한 교정이의 답변이 맞는지 확인하기 위하여 1 x 꼴로 주어지는 질의에 대한 답을 출력하는 프로그램을 작성해보자. 입력 설명 입력의 첫째 줄에 정점의 수 N(3<=N<=100,000)와 질의의 수 M(3<=M<=500,000)이 주어진다. 이 후 N-1줄에 A,B가 주어진다. 이는 A와 B가 연결되어 있다는 뜻이다. 다음 줄에 공백으로 분리 된 N개의 수가 주어진다. i번 째 수는 i번 째 정점의 가중치를 의미한다. 이후 M개의 줄에 질의가 주어진다. 출력 설명 M개의 질의 중, 1 x 꼴로 주어지는 질의에 대한 답을 한줄 씩 출력한다. 예제 입력 / 출력 1 Standard Input Standard Output 5 4 1 2 2 3 2 4 3 5 1 2 3 4 5 1 1 2 3 100 2 1 94 1 4 1 90
  5. 5. - 4 - 예제 입력 / 출력 2 Standard Input Standard Output 7 10 1 2 1 3 1 4 4 5 4 6 6 7 49 38 29 40 3 59 0 2 7 45 2 3 30 1 7 1 5 1 1 2 1 2 1 4 2 6 15 1 1 1 2 45 3 41 61 43 36 Problem D. 세진 바이러스 (1000ms,512MB) 문제 설명 때는 2118년…. 세상의 모든 강과 호수가 말랐다..! 하지만 한 곳..! 인경호는 마르지 않았다. 심지어 지하에서 물이 계속 나왔다. 앞으로도 마르지 않을 것 이다. 인하대학교 학생들은 인경호의 물을 식수로 쓰기 위해 정수 시설을 설치 하기로 했다. 정수 시설은 인경호 안에 N개의 구역에 설치 되었다. 정수 시설이 있는 곳에서는 물을 마실 수 있다. 각 구역은 0번부터 N-1번까지 번호를 써놨다. 그리고 정수 시설에는 깨끗한 물만 흐르게 하기 위해 M개의 파이프를 이용해 연결 시켰다. 파이프로 연결된 정수 시설에서 물은 파이프를 통해 한 방향으로만 흐른다. 예를 들어 1번 정수 시설과 2번 정수 시설이 연결 되었다면 1번 정수 시설에서 2번 정수 시설로만 깨끗한 물이 흐르는 것 이다. 또한 2번 정수 시설과 3번 정수 시설이 연결되어 있다면 1번 정수 시설에서 3번 정수 시설로도 물이 흐른다. 이 때 여러 개가 연결 될 수도 있고 하나도 연결 되지 않을 수 있다. 정수 시설을 설치했기 때문에 인하대학교 학생들은 목이 마를때면 모두 인경호의 물을 마신다. 인하대학교는 학생이 굉장히 많기 때문에 모든 정수 시설에서 최소한 1명은 물을 마신다. 100년 째 CTP 회장을 하고 있던 김세진은 이 소식을 듣고 엄청난 계획을 하기 시작했다..! 바로 세진 바이러스를 정수 시설에 넣는 것이다..! 세진 바이러스를 먹게 된다면 모두 다 김세진 처럼 변하게 된다..! 김세진의 목표는 인하대학교 학생들 모두에게 세진 바이러스를 감염 시키는 것이다..! 그러기 위해선 모든 정수 시설에 바이러스를 감염시켜야 하지만 세진 바이러스는
  6. 6. - 5 - 생산비가 굉장히 비싸다…! 바이러스는 물을 따라서 전염되기 때문에 세진이는 물이 흐르는 방향을 잘 파악하여 최소의 바이러스만 생산하려 한다. 이 때 생산해야 할 바이러스는 몇 개 인지 알아보자..! 입력 설명 입력의 첫째 줄에 정수 시설의 수 N(1<=N<=100000)명 파이프의 수 M(1<=M<=100000)이 주어진다. 이후 두번째 줄부터 M+1번째 줄 까지 연결된 정수 시설 A(0<=A<=N-1), B(0<=B<=N-1) 가 주어진다. 만약 A B가 들어온다면 A에서 B로 흐르는 것을 의미한다. 동일한 파이프는 최대 한번만 들어온다. 출력 설명 세진이가 생산해야 할 최소의 바이러스 개수 K를 출력한다. 예제 입력 / 출력 1 Standard Input Standard Output 10 5 0 5 0 4 2 3 5 9 8 6 5 예제 입력 / 출력 2 Standard Input Standard Output 5 3 0 1 1 2 2 0 3 Problem E. 질투 진서 (1000ms,512MB) 문제 설명 컴퓨터공학과 에릭남 김진서는 주변에 자기보다 잘생긴 사람이 보이면 화가난다. 진서는 수업을 듣기위해 강의실에 앉아있다. 강의실에는 N행 N열로 의자가 놓여있다. N행 N열의 의자 모두 사람들이 앉아있고 사람들의 매력지수 X[i][j] 가 주어진다. (1 <= i , j <= N) i행 j열의 매력지수는 X[i][j]이고, A 가 B 보다 매력지수가 더 높으면 A 가 더 잘생겼다고 할 수 있다.
  7. 7. - 6 - 진서는 자기보다 잘생긴 사람이 있는지 탐색을 하는데, 이 때 자신과 같은 행인 의자에 앉아 있는 사람 또는 같은 열인 의자에 앉아 있는 사람만 볼 수 있다. 진서가 앉아있는 의자의 행 a 와 열 b가 주어질 때, 진서가 볼 수 있는 사람 중 자신보다 잘생긴 사람이 있다면 ANGRY, 그렇지 않다면 HAPPY를 출력하시오. 입력 설명 입력의 첫째 줄에 의자가 놓인 행과 열의 수 N(1<=N<=1000)이 주어지고 , 진서가 앉은 의자가 위치한 행 a, 열 b가 주어진다. 이후 두번째 줄부터 N+1 줄까지 강의실에 앉아있는 학생들의 매력지수 X[i][j](1<=X<=50000)가 주어진다. X[i][j] 는 i행 j열에 앉은 학생의 매력지수이다. 출력 설명 진서가 자기보다 잘생긴 사람을 본다면 ANGRY, 아니라면 HAPPY를 출력한다. 예제 입력 / 출력 Standard Input Standard Output 5 3 2 10 2 3 24 4 21 4 5 12 1 24 52 4 2 2 2 4 3 2 32 1 4 32 2 4 HAPPY
  8. 8. - 7 - Problem F. 낙하산 (1000ms,512MB) 문제 설명 규환이는 최근에 배틀그라운드에 흠뻑 빠졌다. 배틀그라운드는 100명의 사람과 생존 경쟁을 하는 2차원 게임이다. 배틀그라운드 맵의 크기는 (0,0) ~ (Ys, N)이며, 마지막까지 살아남기 위해선 안전한 지역을 확보하는 것이 중요하다. 게임 시작시 시작 지점 S(Ys, Xs)에서 일정한 속도 g로 수직 낙하하게 되며, 수직 낙하 도중에는 왼쪽이나 오른쪽으로 이동할 수 없고, 원하는 순간에 낙하산을 펼 수 있다. 이 때, 규환이의 목표는 안전 지역 E(0, Xe)로 최대한 빠르게 이동하는 것인데 안전 지역으로 이동하는 방법은 1) 낙하산을 펴고 바로 가는 방법, 2) 걸어가는 방법, 3) 차를 타고 가는 방법이 있다. 낙하산을 펴게 되면 왼쪽이나 오른쪽으로 최대 a의 수평 속도로 이동할 수 있고, (즉, 수평 속력은 0~a 가속하는데 걸리는 시간은 0이라고 가정한다) 낙하 속도는 g/2로 감소하게 된다. 낙하산 착륙 위치의 x좌표 값은 항상실수가아닌자연수값이어야한다. 낙하산을 타고 착륙했을 시(y값이 0이 되었을 때) 착륙 후에 걸어가거나 차를 탈 수 있으며 걸어가는 속도는 f이고, 차는 M개가 존재한다. M개의 차는 차마다 위치 P(0,Xp)와 차의 속도 Sp를 갖는다.(차가 가속하는데 걸리는 시간은 0이라고 가정하고, 차를 갈아타는 시간 역시 0이라고 가정하며, 차가 방향을 전환하는데 걸리는 시간도 0이라고 가정한다) 또한, 차는 같은 위치에 존재하지 않는다(Xp는 고유한 값). 예를 들어, 다음 그림 1과 같이 낙하 속도 g가 10이고, 낙하산 수평 최대 속도 a가 2이며 걷는 속도 f가 1이고 시작 위치는 S(100, 100)이라면, 낙하 시 x축 속도는 0이며, y축 속도는 g(=10)이다.그리고 5초가 지나면 위치 P는 (50, 100)이고 이 때 낙하선을 펴고 최대 속도 a로 오른쪽으로 간다면 x축 속도는 a(=2)가 되고, y축 속도는 g/2(=5)가 된다. 그러면 10초 뒤에 X1 (0, 120)에 도착하게 된다. 그리고 1번 차량을 타면 x축 속도는 S1(=60)이 되고 1초 뒤에 안전 지역에 도착할 수 있다. 이 때, 규환이가 안전 지역으로 최대한 빠르게 도착할 수 있는 시간을 구해보자.
  9. 9. - 8 - 입력 설명 입력의 첫째 줄에 맵의 x축 크기 N (N은 200 이하의 자연수), 차의 개수 M (M은 100이하의 정수), 수직 낙하 속도 g (0 < g <= 1,000인 자연수), 낙하산을 폈을 때 수평 속도 a (0 < a <= 100인 자연수), 걸을 때 속도 f (0 < f <= 1,000,000인 자연수)가 주어지며 둘째 줄에 시작 위치 Sy (0 < Sy <= 1000인 자연수), Sx (0 <= Sx <= N인 정수)와 안전 지역 위치 Ex (0 <= Ex <= N인 자연수)가 주어진다. 그리고 다음 M줄에 각 줄마다 차의 위치 Xp ( 0 <= Xp <= N인 자연수)와 차의 속도 Sp (0 < Sp <= 1,000,000인 자연수)가 주어진다. 출력 설명 안전지역에 도착하는 최소 시간을 출력한다. 절대/상대 오차는 10-6까지 허용한다. 예제 입력 / 출력 1 Standard Input Standard Output 200 2 10 2 1 100 100 180 120 60 200 100 16.00000000 예제 입력 / 출력 2 Standard Input Standard Output 200 3 10 2 1 100 100 180 100 20 120 60 200 100 12.00000000 Problem G. Send me the money (1000ms,512MB) 문제 설명 석규는 해외로 저렴하고 간편하게 송금할 수 있는 센트비 서비스를 이용하여 CTP 왕국에 놀러간 형동이에게 돈을 보내주려고 한다. 하지만 안타깝게도 석규는 센트비 비밀번호를 까먹어버렸고 돈을 보내주지 못한다. 다행히도 석규는 평소에 포스트잇에 비밀번호를 적어놓는다. 비밀번호는 알파벳 대문자로만 구성이 되어있으며 석규는 이 중 일부를 정확히 기억하고 있다. 석규는 포스트잇을 확인하여 비밀번호를 입력하려고 했지만, 포스트잇은 여러 장 존재했고 이 중 어떤 포스트잇이 센트비 비밀번호가 적힌 포스트잇인지 모른다. 석규는 센트비 비밀번호의 알파벳 중 등장하는 순서대로 N글자만 정확히 기억하고 있으며 포스트잇 중에 이 순서를 갖는 포스트잇이 센트비 비밀번호일 가능성이 있는 포스트잇이다. 예를 들어, 석규가 ABB를 기억한다면 BBAB이 적힌 포스트잇은 비밀번호일 가능성이 없고, HAEBBC가 적힌 포스트잇은 비밀번호일 가능성이 있다.
  10. 10. - 9 - 석규는 형동이에게 송금해주기 위해 포스트잇들 중 비밀번호가 적힌 포스트잇일 가능성이 있는 포스트잇들을 따로 분류하려고 한다. 석규가 기억하는 알파벳 N글자와 포스트잇 M개가 주어질 때, 해당 포스트잇에 적힌 알파벳이 비밀번호일 가능성이 있는지 여부를 판단하여 보자. 입력 설명 입력의 첫째 줄에 석규가 기억하는 원본 알파벳의 수 N(1<=N<=100)과 포스트잇의 개수 M(1<=M<=1000)이 주어진다. 다음 줄에 길이가 N인 알파벳 대문자로 이루어진 문자열 S가 주어진다. 이 후 M개의 줄에 알파벳 대문자로 이루어진 판별해야 할 포스트잇들이 주어진다. 모든 포스트잇에 적힌 문자열은 1000자 이하이다. 출력 설명 M개의 줄에 가능성 여부를 “true” , “false”로 답하여라. 예제 입력 / 출력 1 Standard Input Standard Output 4 5 PPAP PPAPP PPPPA APPPP PPPAP PAPAP true false false true true 예제 입력 / 출력 2 Standard Input Standard Output 3 2 CTP P CHALLENGETHEPROGRAMING false true
  11. 11. - 10 - Problem H. 기차가 어둠을 헤치고 은하수를 (1000ms,512MB) 문제 설명 N개의 기차가 어둠을 헤치고 은하수를 건너려고 한다. 기차는 20개의 일렬로 된 좌석이 있고, 한 개의 좌석에는 한 명의 사람이 탈 수 있다. 기차의 번호를 1번부터 N번으로 매길 때, 어떠한 기차에 대하여 M개의 명령이 주어진다. 명령의 종류는 4가지로 다음과 같다. ● 1 i x : i번째 기차에(1<=i<=N) x번째 좌석에(1<=x<=20) 사람을 태워라. 이미 사람이 타있다 면 , 아무런 행동을 하지 않는다. ● 2 i x : i번째 기차에 x번째 좌석에 앉은 사람은 하차한다. 만약 아무도 그자리에 앉아있지 않았다면, 아무런 행동을 하지 않는다. ● 3 i : i번째 기차에 앉아있는 승객들이 모두 한칸씩 뒤로간다. i번째 앉은 사람은 i+1번째로 이동하여 앉는다. 만약 20번째 자리에 사람이 앉아있었다면 그 사람은 이 명령 후에 하차한 다. ● 4 i :i번째 기차에 앉아있는 승객들이 모두 한칸씩 앞으로간다. i번째 앉은 사람은 i-1 번째 자리로 이동하여 앉는다. 만약 1번째 자리에 사람이 앉아있었다면 그 사람은 이 명령 후에 하차한다. M번의 명령 후에 1번째 기차부터 순서대로 한 기차씩 은하수를 건너는데 조건이 있다. 기차는 순서대로 지나가며 기차가 지나갈 때 승객이 앉은 상태를 목록에 기록하며 이미 목록에 존재하는 기록이라면 해당 기차는 은하수를 건널 수 없다. 예를 들면, 다음 그림을 예로 들었을 때, 1번째 기차와 같이 승객이 앉은 상태는 기록되지 않았기 때문에 은하수를 건널 수있다. 2번째 기차와 같은 상태도 기록되지 않았기 때문에 2번째 기차도 은하수를 건널 수 있다. 3번째 기차는 1번째 기차와 승객이 앉은 상태가 같으므로 은하수를 건널 수 없다. 처음에 주어지는 기차에는 아무도 사람이 타지 않는다. 은하수를 건널 수 있는 기차의 수를 출력하시오.
  12. 12. - 11 - 입력 설명 입력의 첫째 줄에 기차의 수 N(1<=N<=100000)과 명령의 수 M(1<=M<=100000)가 주어진다. 이후 두번째 줄부터 M+1번째 줄까지 각 줄에 명령이 주어진다. 출력 설명 은하수를 건널 수 있는 기차의 수를 출력하시오. 예제 입력 / 출력 Standard Input Standard Output 5 5 1 1 1 1 1 2 1 2 2 1 2 3 3 1 2 Problem I. 밸런스 스톤 (1000ms,512MB) 문제 설명 우주의 인구를 반으로 줄이려는 악당 타노진스는 우주의 인구 수를 조절할 수 있는 밸런스 스톤이라는 보석을 차지하려고 한다. 이에 맞서는 씨벤저스 멤버 캡틴 학규는 타노진스보다 먼저 밸런스 스톤을 발견하여 파괴하려고 한다. 밸런스 스톤은 N * N 블록으로 이루어진 숫자 퍼즐을 완성하면 얻을 수 있다. 이 숫자 퍼즐은 1가지 블록의 숫자가 비어져 있는 상태이며, 규칙을 만족하는 숫자 M을 블록에 채워넣으면 퍼즐이 완성된다. 규칙은 다음과 같다. [ 규칙 ] 1) 숫자 M을 채워넣었을 때 같은 행에 있는 숫자의 합은 모두 같아야 한다. 2) 숫자 M을 채워넣었을 때 같은 열에 있는 숫자의 합은 모두 같아야 한다. 3) 숫자 M을 채워넣었을 때 블럭의 대각선의 있는 숫자들의 합도 모두 -같아야 한다. 4) 어떠한 숫자를 M에 넣어도 규칙 1, 2, 3을 만족하지 못한다면 -1을 블록에 채워 넣으면 블 록이 완성된다. 5) 캡틴 학규를 도와 퍼즐을 완성하고 우주의 평화를 지키자 입력 설명 입력의 첫째 줄에 맵의 크기 N(2<=N<=500)이 주어진다. 다음 N줄에 각 블록의 숫자 k가 N개가 주어진다. (1<=k<=1,000,000,000의 자연수), 비어있는 블록은 숫자 0으로 주어진다.
  13. 13. - 12 - 출력 설명 퍼즐의 조건을 만족하는 숫자 M을 출력한다. 예제 입력 / 출력 1 Standard Input Standard Output 3 6 1 8 7 5 3 2 0 4 9 예제 입력 / 출력 2 Standard Input Standard Output 2 1 0 2 1 -1
  14. 14. - 13 - Problem J. CTP 왕국은 한솔 왕국을 이길 수 있을까? (1000ms,512MB) 문제 설명 CTP 왕국은 정말 깊은 역사를 가지고 있다. 선대 김진서 왕부터 시작하여 전현용 왕을 거쳐 … 마침내 김세진이 CTP 왕국의 왕이됬다. 세진이는 재미없는 개그를 정말 싫어했기 때문에 왕이 되자마자 CTP 왕국에서 가장 재미없는 이한솔을 쫓아냈다. 화가난 한솔이는 자기에 개그에 유일하게 웃어주던 박정률과 함께 한솔 왕국을 세웠다. 그 이후 33년이 지났다 …………. 어느새 한솔 왕국은 번창하여 CTP 왕국보다 힘이 쎄졌다. 세진이는 다른 왕국과 동맹을 맺어 CTP 왕국의 힘을 길러 한솔 왕국보다 부흥시키려고 한다. 왕국의 힘이란 동맹국의 수를 의미한다. (예를 들어 동맹이 없는 나라의 힘은 1이다) 왕국간의 동맹의 법칙은 조금 특별해서 만약에 A왕국과 B왕국이 동맹이고 B왕국과 C왕국이 동맹이라면 A왕국과 C왕국도 동맹이 된다. CTP 왕국의 왕 세진이는 최대 K번 다른 왕국과 동맹을 맺을 기회를 갖으며, 현재 동맹관계는 CTP 왕국과 한솔 왕국은 동맹이 아니다. 또한 한솔 왕국과 동맹인 왕국과는 동맹을 맺을 수 없으며 K번의 동맹 맺을 기회를 모두 사용하지 않아도 된다. 각 왕국들의 동맹관계와 CTP 왕국의 번호, 한솔 왕국의 번호가 주어질 때 세진이를 도와 CTP 왕국의 힘의 최대값을 구하여라 입력 설명 입력의 첫째 줄에 왕국의 수 N(3<=N<=100000)과 동맹 관계의 수 M(1<=M<=200000)이 주어진다. 이 후 M개의 줄에 X,Y가 주어진다. 이는 X 왕국과 Y 왕국이 동맹이라는 뜻이다. 입력의 마지막 줄에 CTP 왕국의 번호 C와 한솔 왕국의 번호 H와 추가 동맹의 기회 K(0<=K<=100)가 공백으로 구분되어 주어진다. (주어지는 입력에서 CTP 왕국과 한솔 왕국은 절대로 동맹이 되지 않게 주어진다.) 출력 설명 CTP 왕국의 힘의 최대값을 출력하라.
  15. 15. - 14 - 예제 입력 / 출력 1 Standard Input Standard Output 10 7 1 2 1 3 2 3 1 4 5 6 8 10 7 9 5 9 1 6 예제 입력 / 출력 2 Standard Input Standard Output 10 7 12 13 23 14 56 810 79 511 4 Problem K. 최종병기 활 (1000ms,512MB) 문제 설명 ‘최종병기 활’ 이라는 영화를 보던 지훈이는 깊은 감명을 받아 직접 활을 만들어 보기로 한다. 활의 구조는 나무부분인 활대와 고무줄부분인 활줄로 나뉘는데, 나무로 되어있는 활대부분에 활줄을 걸어 활을 만든다. 지훈이의 아버지는 목수이시기 때문에, 활대는 아버지에게 부탁하면 원하는 길이와 모양으로 만들어 주신다. 따라서 지훈이는 활줄을 만들기위해 고무줄을 사러 문구점에 찾아갔다. 문구점에서 고리모양의 고무줄을 사왔는데, 이 고무줄은 N 길이의 둘레를 가진다. 그리고 고무줄에 M개의 위치에 홈이 파여 있는데, 이 고무줄은 너무 튼튼해서 홈이 파인 곳만 절단할 수 있다. 고무줄에서 홈이 파인 위치 X는 시계 12시방향을 기준으로 0부터 시작해서 시계방향으로 1씩 증가한다. 따라서 홈이 파인 위치 X는 0부터 N-1 까지의 정수로 표현된다. 아래의 [그림2]은 N = 20, M = 3, X = {2,4,6} 일 때 고무줄의 그림이다.
  16. 16. - 15 - 또한 최고의 활을 만들기위해서는 K겹의 고무줄이 필요하다. 따라서 주어진 고무줄을 적당히 절단하여 K개의 직선고무줄을 얻어낼 것이다. K겹의 직선고무줄을 겹쳐 활대에 걸게 되는데, 이 때 K개의 직선고무줄 중 가장 작은 고무줄의 길이에 의해 활의 길이가 결정된다. 즉, 절단한 고무줄 중 가장 작은 고무줄의 길이가 활의 길이가 된다. 지훈이가 만들 수있는 가장 긴 활의 길이는? 입력 설명 입력의 첫째 줄에 고무줄의 둘레 N(1<=N<=100000 인 정수)과 절단이 가능한 홈의 개수 M(1<=M<=min(N,1000) 인 정수) 그리고 최고의 활을 만들때 필요한 고무줄겹의 수 K(1<=K<=M 인 정수)가 주어진다. 이후 두번째 줄부터 M+1번째 줄까지 고무줄에서 절단이 가능한 홈의 위치 X(0<=X<=N-1 인 정수)가 주어진다. 주어지는 홈의 위치는 각각 유일하며 오름차순으로 주어진다. 출력 설명 만들 수 있는 가장 긴 활의 길이를 출력하시오. 만약 활을 만들 수 없다면 -1을 출력하시오. 예제 입력 / 출력 1 Standard Input Standard Output 20 3 3 2 4 6 2 예제 입력 / 출력 2 Standard Input Standard Output 20 3 1 2 4 6 20
  17. 17. - 16 - Problem L. 세진이의 미팅 (1000ms,512MB) 문제 설명 모태 솔로인 세진이는 이번에는 꼭 여자친구를 사귀어야겠다는 마음으로 형진이가 주최한 미팅에 참석하게 된다. 하지만 안타깝게도 컴퓨터공학과는 남초학과이기 때문에 항상 남자의 수가 여자의 수보다 많거나 같다. 마음이 급해진 세진이는 항상 모든 여자들이 남자들과 짝을 이루어진다고 가정하였을 때 남자들이 선택되는 모든 경우를 시뮬레이션 해보려고 한다. 세진이를 도와 미팅에서 선택될 수 있는 남자들의 모든 상태의 경우의 수를 구해보자. 단, 수가 너무 커질 수 있으니 1000000007로 나눈 나머지를 구해보자. 입력 설명 입력의 첫째 줄에 남학생의 수 N(2<=N<=1000000)명 여학생의 수 M(1<=M<=N)명이 주어진다. 출력 설명 경우의 수를 1000000007로 나눈 나머지를 출력하라. 예제 입력 / 출력 1 Standard Input Standard Output 3 2 3 예제 입력 / 출력 2 Standard Input Standard Output 5 2 10

×