import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class problem298 {
public static void main(String[] args) throws IOException {
// 시간초과 이유로 인해 버퍼로 입력값을 받는다.
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int index = Integer.parseInt(st.nextToken());
int[] arr = new int[n];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
Arrays.sort(arr);
System.out.println(arr[index - 1]);
}
}
import java.util.Scanner;
public class problem299 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String[] arr = new String[n];
for (int i = 0; i < n; i++) {
arr[i] = in.next();
}
// 오름차순, 내림차순 검증
boolean INCREASING = true;
boolean DECREASING = true;
// compareTo : 두 문자열을 사전식으로 비교,
// 반환값이 0보다 작으면 첫번째 문자열이 두번째 문자열보다 사전식으로 앞서는것이고,
// 반환값이 0보다 크면 첫번째 문자열이 두번째 문자열보다 사전식으로 느린것이다.
for (int i = 1; i < n; i++) {
if (arr[i].compareTo(arr[i - 1]) > 0) {
// 조건은 오름차순인데, 내림차순을 false해준다.
DECREASING = false;
} else if (arr[i].compareTo(arr[i - 1]) < 0) {
INCREASING = false;
}
}
if (INCREASING) {
System.out.println("INCREASING");
} else if (DECREASING) {
System.out.println("DECREASING");
} else {
System.out.println("NEITHER");
}
}
}
백준 7562번 (Bronze 1)
// 많이 어려웠던 문제.
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class problem275 {
// x,y 좌표로 이동할수있는 경우의수 8가지
static int[] dx = {-2, -1, 1, 2, 2, 1, -1, -2};
static int[] dy = {1, 2, 2, 1, -1, -2, -2, -1};
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t = in.nextInt();
// t가 0이 될떄까지
while (t-- > 0) {
int n = in.nextInt(); // 체스판의 한 변의 길이
int[][] graph = new int[n][n];
int startX = in.nextInt(); // x의 시작위치
int startY = in.nextInt(); // y의 시작위치
int endX = in.nextInt(); // x의 도착위치
int endY = in.nextInt(); // y의 도착위치
Queue<int[]> q = new LinkedList<>();
q.offer(new int[]{startX, startY}); // 시작위치 q의 저장
graph[startX][startY] = 1; // 이동횟수
while (!q.isEmpty()) {
int[] temp = q.poll();
int x = temp[0];
int y = temp[1];
// 현재위치가 목표의 위치에 도달했을경우
if (x == endX && y == endY) {
System.out.println(graph[x][y] - 1);
break;
}
for (int i = 0; i < 8; i++) {
int mX = x + dx[i];
int mY = y + dy[i];
// 범위 체크
if (mX < 0 || mX >= n || mY < 0 || mY >= n) continue;
if (graph[mX][mY] != 0) continue;
graph[mX][mY] = graph[x][y] + 1;
q.offer(new int[]{mX, mY});
}
}
}
}
}