답안 #875459

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
875459 2023-11-19T19:02:05 Z gutzzy Hotel (CEOI11_hot) C++14
60 / 100
4000 ms 16804 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long

int n,m,o,profit;

pair<int,int> best_room(vector<pair<int,int>> &rooms, pair<int,int> of, vector<bool> &used){
    int bestr = -1;
    int bestp = 1e9 + 7;
    for(int i=0;i<n;i++){
        if(used[i]) continue;
        pair<int,int> room = rooms[i];
        if(room.second>=of.second and room.first<=bestp){
            if(room.first<bestp or bestr==-1){
                bestp = room.first;
                bestr = i;
            }
            else{
                if(room.second<rooms[bestr].second){
                    bestp = room.first;
                    bestr = i;
                }
            }
        }
    }
    return {of.first-bestp,bestr};
}

main(){
    profit = 0;
    cin >> n >> m >> o;
    vector<pair<int,int>> rooms(n);
    vector<bool> used(n, false);
    vector<pair<int,int>> ofertas(m);
    for(int i=0;i<n;i++) cin >> rooms[i].first >> rooms[i].second;
    for(int i=0;i<m;i++) cin >> ofertas[i].first >> ofertas[i].second;
    sort(rooms.begin(),rooms.end());
    sort(ofertas.begin(),ofertas.end());
    
    priority_queue<pair<pair<int,int>,int>> pq;
    
    for(int xx=0;xx<m;xx++){
        pair<int,int> of = ofertas[xx];
        pq.push({best_room(rooms, of, used),xx});
    }     
    
    while(o>0 and !pq.empty()){
        pair<pair<int,int>,int> p = pq.top();
        pq.pop();
        if(p.first.second==-1 or p.first.first<=0) continue;
        //cout << p.first.first << " " << p.first.second << " " << p.second << endl;
        if(used[p.first.second]){
            pq.push({best_room(rooms,ofertas[p.second], used),p.second});
        }
        else{
            profit += p.first.first;
            used[p.first.second] = true;
            o--;
        }
    }
    
    cout << profit << endl;

    return 0;
}

Compilation message

hot.cpp:29:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   29 | main(){
      | ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 83 ms 836 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2122 ms 3532 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4098 ms 4464 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4021 ms 7516 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4019 ms 13516 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4033 ms 16804 KB Time limit exceeded
2 Halted 0 ms 0 KB -