페이지

2258번: 정육점

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


#include<stdio.h>
#include<algorithm>
using namespace std;
pair<intint> p[100001];
int n, m;
int main() {
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++) {
        scanf("%d %d", &p[i].second, &p[i].first);
        p[i].second *= -1;
    }
    sort(p + 1, p + 1 + n);
    int s = 0, c = 0, mini = 0x7fffffff, flag = 0;
    for (int i = 1; i <= n; i++) {
        s -= p[i].second;
        if (p[i].first == p[i - 1].first) c += p[i - 1].first;
        else c = 0;
        if (s >= m) mini = min(mini, p[i].first + c), flag = 1;
    }
    printf("%d", flag ? mini : -1);
    return 0;
}

댓글 없음 :

댓글 쓰기