#include <stdio.h>
#define MAX 100 // 큐 배열의 최대 크기다.문제에서 100으로 제시했으니 이만큼 한다
typedef struct {
int star; // 문서의 중요도(1~9)
int index; // 문서의 원래 위치로 0부터 시작한다
} Doc;
int main() {
int T;
scanf("%d", &T);
while (T--) {
int N, M;
scanf("%d %d", &N, &M);
Doc queue[MAX];
int front = 0; // 맨 앞(다음에 꺼낼 위치) 인덱스
int rear = 0; // 맨 뒤(다음에 넣을 위치) 인덱스
int size = 0; // 현재 들어있는 문서 개수
for (int i = 0; i < N; i++) {
scanf("%d", &queue[rear].star); // 중요도를 입력한다
queue[rear].index = i;
rear = (rear + 1) % MAX; // rear를 원형이므로 이동시킨다
size++; // 큐 크기 증가
}
int count = 0;
// 실제 프린터 동작이다
while (size > 0) {
// pos는 front부터 size개 만큼 순회하면서 값을 본다.
int max_star = 0;
for (int i = 0, pos = front; i < size; i++) {
if (queue[pos].star > max_star)
max_star = queue[pos].star;
pos = (pos + 1) % MAX;
}
Doc current = queue[front];
front = (front + 1) % MAX;
size--; // 꺼냈으므로 size 감소
// 중요도를 비교한다.
if (current.star == max_star) {
// 현재가 큐에서 가장 높은 중요도라면 인쇄한다.
count++;
if (current.index == M) {
printf("%d\n", count);
break;
}
} else {
queue[rear] = current;
rear = (rear + 1) % MAX;
size++; // 다시 넣었으니 size를 원상복구힌디
}
}
}
return 0;
}
#include <stdio.h>
int main() {
long long N, M; // N, M을 문제의 조건에 따라 long long 사용
scanf("%lld %lld", &N, &M);
long long answer = 0; //최대로 방문 가능한 칸의 수다
//세로가 1인 경우이다.
if (N == 1) {
answer = 1;
}
//세로가 2인 경우다
else if (N == 2) {
// 오른쪽으로 두 칸씩 이동 가능 -> 최대 (M+1)/2번 방문한다
answer = (M + 1) / 2;
if (answer > 4) answer = 4; // 4 이상은 4로 제한
}
//세로가 3이상인 경우이다. 세로가 3이상이면 모든 4가지 이동 방법이 사용 가능하다.
else { // N >= 3
if (M < 7) {
answer = M < 4 ? M : 4; // 최대 4칸까지만 방문 가능하다
} else {
answer = M - 2; // M>=7이면 M-2가 최대 방문 수
}
}
printf("%lld\n", answer);
return 0;
}