https://www.acmicpc.net/problem/1655

 

1655번: 가운데를 말해요

첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -10,000보다 크거나 같고, 10,000보다 작거나 같다.

www.acmicpc.net

 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
//가운데를 말해요  1655 
int main()
{
    priority_queue <int> p;
    priority_queue <int, vector<int>, greater<int>> q;
    int n,i,a;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d",&a);
        if(p.empty() || q.empty())
        {
            //puts("11");
            p.push(a);
        }
        else
        {
            //puts("22");
            if(q.top()<=a)
            {
                //puts("33");
                q.push(a);
            }
            else
            {
                //puts("44");
                p.push(a);
            }
        }
        if(!(p.size() == q.size() || p.size() == q.size() + 1))
        {
            //uts("55");
            if(p.size() > q.size())
            {
                q.push(p.top());
                p.pop();
            }
            else{
                p.push(q.top());
                q.pop();
            }
        }
        printf("%d\n", p.top());
    }
    return 0;
}

 

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

스택 Stack  (0) 2022.02.04
단어 뒤집기 2  (0) 2021.12.31
BOJ 외판원 순회 2 - 10971번  (0) 2020.05.08
백준 - 프린터 큐 : 1966번  (0) 2020.04.26
백준 - 로마 숫자 만들기 : 16922번  (0) 2020.04.26

+ Recent posts