입력 코드
#include <stdio.h>
int q[451];
int main() {
int head,tail,i,j,n,m,cnt=0,x;
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++) q[200+i]=200+i;
head=201; tail=200+n;
for(i=1;i<=m;i++) {
scanf("%d",&x);
x+=200;
for(j=head;j<=tail;j++) {
if(q[j]==x) {x=j; break;}
}
if(x<=(head+tail)/2) {
while(head!=x) {
q[++tail]=q[head];
cnt++; head++;
}
head++;
}
else {
while(1) {
q[--head]=q[tail];
cnt++;
if(tail==x) break;
tail--;
}
tail--;
head++;
}
}
printf("%d",cnt);
}
출처 www.acmicpc.net/source/2701255
코드 설명
#자료구조 #덱
References
blog.naver.com/gkfla1017/222229550344
문제 출처
'C' 카테고리의 다른 글
#70. [백준_C언어] 1010 : 다리 놓기 \ 다이나믹 프로그래밍 (0) | 2021.02.10 |
---|---|
#69. [백준_C언어] 4889 : 안정적인 문자열 \ 자료구조 (0) | 2021.02.09 |
#67. [백준_C언어] 1966 : 프린터 큐 \ 큐, 덱 (0) | 2021.02.08 |
#66. [백준_C언어] 18258 : 큐 2 \ 큐, 덱 (0) | 2021.02.08 |
#65. [백준_C언어] 10773 : 제로 \ 스택 (0) | 2021.02.08 |