Problem
https://www.acmicpc.net/problem/2605
2605번: 줄 세우기
점심시간이 되면 반 학생 모두가 한 줄로 줄을 서서 급식을 탄다. 그런데 매일 같이 앞자리에 앉은 학생들이 앞에 줄을 서 먼저 점심을 먹고, 뒷자리에 앉은 학생들은 뒤에 줄을 서 늦게 점심을
www.acmicpc.net
Solve
- 제비뽑기를 통해 줄세우는 문제
- 첫번째 학생부터 뽑기 결과가 주어지면 적절한 위치에 멤버를 삽입하면 됨
> vector<int> line; //선언
> line.insert(prev(line.end(),num),i); // 벡터의 end()에서 투표 결과만큼 앞으로 반복자를 이동한 후 해당 위치에 학생 숫자 i 를 삽입
#include <iostream>
#include <vector>
using namespace std;
class sol
{
int N;
vector<int> line;
void vote_line()
{
//line.push_back(1);
int num;
for (int i = 1; i <= N; i++)
{
cin >> num;
if (num == 0)
{
line.push_back(i);
}
else
{
line.insert(prev(line.end(), num), i);
}
}
}
void print_line()
{
for (int i : line)
{
cout << i << " ";
}
}
public:
sol(const int& n) : N(n) {
line.reserve(N);
}
void solution()
{
vote_line();
print_line();
}
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int m;
cin >> m;
sol S(m);
S.solution();
return 0;
}
'C++ > 백준 문제풀이' 카테고리의 다른 글
[N번째 큰 수 - 백준] / priority_queue , 자료구 (2) | 2023.05.16 |
---|---|
[막대기 - 백준] / stack, 자료구 (1) | 2023.05.16 |
[후위 표기식2 - 백준] / Stack, queue (0) | 2023.05.05 |
C++ [이중 우선순위 큐-백준] / map, key값으로 찾고 value로 중복 갯수 확인 , 반복자 이 (0) | 2023.04.27 |
C++ [비밀번호 찾기_백준] / #map #자료구조 (0) | 2023.04.07 |