본문 바로가기
온라인저지

[BOJ] 2075번: N번째 큰 수

by plzfday 2018. 7. 26.

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

메모리 제한이 10MB인데 1500*1500 크기의 배열에 정렬을 해도 메모리 9.9MB에 640ms로 아슬아슬하게 AC를 받는다 ㅋㅋㅋ

아니면 우선순위 큐(pq라고 하겠다)를 이용하는 방법도 있다. pq는 pop할 때 기본적으로 가장 큰 수가 나오기 때문에 pq 크기가 n보다 클 때 계속 pop하면 pq.top은 가장 큰 수(n번째 큰 수)가 남는다.

#include <stdio.h>
#include <queue>
using namespace std;

int n;
priority_queue<int> pq;

int main()
{
    scanf("%d", &n);
    for (int a, i = 0; i < n * n; i++)
    {
        scanf("%d", &a);
        pq.push(-a);
        if (pq.size() > n)
            pq.pop();
    }
    printf("%d", -pq.top());
    return 0;
}

 

#include <cstdio>
#include <algorithm>
using namespace std;

int n;
int ar[2250001];
bool comp(const int &a, const int &b) { return a > b; }
int main()
{
    scanf("%d", &n);
    for (int i = 0; i < n * n; ++i)
        scanf("%d", &ar[i]);
    sort(ar, ar + n * n, comp);
    printf("%d\n", ar[n - 1]);
}

 

'온라인저지' 카테고리의 다른 글

[BOJ] 3040번: 백설 공주와 일곱 난쟁이  (0) 2018.07.27
[BOJ] 1764번: 듣보잡  (0) 2018.07.26
[BOJ] 10539번: 수빈이와 수열  (0) 2018.07.26
[BOJ] 1159번: 농구 경기  (0) 2018.07.26
[BOJ] 10799번: 쇠막대기  (0) 2018.07.26
[BOJ] 9012번: 괄호  (0) 2018.07.26

댓글