#include <cstdio>#include <queue>#include <iostream>#include <utility>using namespace std;
int main(){ queue<int> que; queue<int> outnum_que; int N ,M; int cnt=0; scanf("%d %d",&N,&M); for(int i=0;i<M;i++){ int num; scanf("%d",&num); outnum_que.push(num); } for(int i=1;i<=N;i++){ que.push(i); } while(M){ if(que.front() == outnum_que.front()){ que.pop(); outnum_que.pop(); M--; } else if(abs(que.front()-outnum_que.front())<=abs(que.back()-outnum_que.front())){ que.push(que.front()); que.pop(); cnt++; } else{ for(int i=que.size();i>1;i--){ que.push(que.front()); que.pop(); } cnt++;
}
printf("%d\n",cnt);
몇번 문제인지가 나와있지 않네요^^
댓글을 작성하려면 로그인해야 합니다.
obo314 6년 전
#include <cstdio>
#include <queue>
#include <iostream>
#include <utility>
using namespace std;
int main(){
queue<int> que;
queue<int> outnum_que;
int N ,M;
int cnt=0;
scanf("%d %d",&N,&M);
for(int i=0;i<M;i++){
int num;
scanf("%d",&num);
outnum_que.push(num);
}
for(int i=1;i<=N;i++){
que.push(i);
}
while(M){
if(que.front() == outnum_que.front()){
que.pop();
outnum_que.pop();
M--;
}
else if(abs(que.front()-outnum_que.front())<=abs(que.back()-outnum_que.front())){
que.push(que.front());
que.pop();
cnt++;
}
else{
for(int i=que.size();i>1;i--){
que.push(que.front());
que.pop();
}
cnt++;
}
}
printf("%d\n",cnt);
}