출처 : www.acmicpc.net/problem/7662 문제 이중 우선순위 큐(dual priority queue)는 전형적인 우선순위 큐처럼 데이터를 삽입, 삭제할 수 있는 자료 구조이다. 전형적인 큐와의 차이점은 데이터를 삭제할 때 연산(operation) 명령에 따라 우선순위가 가장 높은 데이터 또는 가장 낮은 데이터 중 하나를 삭제하는 점이다. 이중 우선순위 큐를 위해선 두 가지 연산이 사용되는데, 하나는 데이터를 삽입하는 연산이고 다른 하나는 데이터를 삭제하는 연산이다. 데이터를 삭제하는 연산은 또 두 가지로 구분되는데 하나는 우선순위가 가장 높은 것을 삭제하기 위한 것이고 다른 하나는 우선순위가 가장 낮은 것을 삭제하기 위한 것이다. 주어진 정수 값 자체를 우선순위라고 했을 때, 주어진 ..
. youtu.be/iFv7eadVhwk youtu.be/t7-4E4WBFJQ
문제링크 codeforces.com/contest/1481 Dashboard - Codeforces Round #699 (Div. 2) - Codeforces codeforces.com A. Puzzle From the Future 문제 우주선으로 (0,0)에서 (px, py)로 이동하려고 한다. 우주선은 문자열 s에 입력된대로만 이동할 수 있고, 우주선이 문자열을 읽는 순서는 왼쪽에서 오른쪽으로 읽는다. 현재 좌표가 (x,y)이고, 읽어야하는 문자열의 위치가 s[i]일 때, 아래와 같은 규칙으로 이동한다고 한다. - s[i] == U이면 (x, y) -> (x, y+1)로 이동 - s[i] == D이면 (x, y) -> (x, y-1)로 이동 - s[i] == R이면 (x, y) -> (x+1, y)로..
http://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net 전체 코드 더보기 #include #include using namespace std; const int MAX = 10000; int N, M; int num[MAX]; bool calc(int mid) { int sum = 0; for (int i = 0; i N; for (int i = 0; i < N; i+..
www.acmicpc.net/problem/2980 2980번: 도로와 신호등 상근이는 트럭을 가지고 긴 일직선 도로를 운전하고 있다. 도로에는 신호등이 설치되어 있다. 상근이는 각 신호등에 대해서 빨간 불이 지속되는 시간과 초록 불이 지속되는 시간을 미리 구해왔 www.acmicpc.net 전체 코드 더보기 #include #include using namespace std; int n, l; map mp; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> l; for (int i = 0; i > d >> r >> g; mp[d] = make_pair(r, g); } int dis..
www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 전체 코드 더보기 #include #include #include #include using namespace std; typedef long long ll; int n; vector v; int dp[10001]; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); memset(dp, 0, sizeof(dp)); cin >> n; v.resi..
출처 : East Central North America 2001, poj 1028 톡방에서 추천 받은 스택 문제인데 구글에 풀이가 바로 안나오길래 올려놓습니다. 문제 초기 웹 페이지는 acm.org 로 설정된 상태에서 주어진 명령에 따라 웹페이지 및 스택이 변화한다. 우선 스택은 크게 두 종류가 있는데 페이지를 "앞으로 이동하게" 도와주는 forward Stack, 페이지를 "뒤로 가게" 도와주는 backward Stack이 있다. 문제에서 나오는 명령어는 4가지로, BACK, FORWARD, VISIT, QUIT가 있고 각각의 역할은 다음과 같다. BACK : 현재 페이지를 forward Stack에 push하고, backward Stack을 pop해 현재 페이지로 만든다. FORWARD : 현재 페..
풀이 더보기 x의 범위가 크기 때문에 1씩 증가시키는 방법으로 풀면 시간초과가 나게 된다. 따라서 이분 탐색을 통해 풀어야 한다. 이 때, 99% 승률에서는 100%가 될 수 없다는 점을 유의하여 예외로 처리해주어야 한다. 소스 코드 더보기 #include using namespace std; long long x, y, z; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> x >> y; z = (y * 100) / x; //바뀌지 않는 경우 if(z >= 99){ cout