ログイン
新規登録
AtsuoCoder Waseda Tour Finals 2025
読込中…
Home
Tasks
Clar
Submissions
Standings
提出 cdadbd3a-2919-4b2b-9045-e6c2fc741f43
コード
#ifndef INCLUDE_MACRO #define INCLUDE_MACRO #include __FILE__ signed main() { iniii(n, m, h); vpi vec(n); rep(i, n) { inii(x, y); vec.at(i).first = x; vec.at(i).second = y; //first => 解く秒数 second => 減らすHP } sort(all(vec)); rep(i, n) { int a = vec.at(i).first; int b = vec.at(i).second; vec.at(i).second = a; vec.at(i).first = b; } int ans = INF; int HP = 0; priority_queue<pi> que; rep(i, n) { int minus_HP = vec.at(i).second; int g = vec.at(i).first; HP += minus_HP; que.push(make_pair(g, i)); while (HP > h) { int sute_i = que.top().second; HP -= vec.at(sute_i).second; que.pop(); } while (que.size() > m) { int sute_i = que.top().second; HP -= vec.at(sute_i).second; que.pop(); } if (que.size() == m) { chmin(ans, que.top().first); } } if (ans == INF) { cout << -1 << endl; return 0; } cout << ans << endl; return 0; } #else //#include <bits/stdc++.h> #include <iostream> // cout, endl, cin #include <string> // string, to_string, stoi #include <vector> // vector #include <algorithm> // min, max, swap, sort, reverse, lower_bound, upper_bound #include <utility> // pair, make_pair #include <tuple> // tuple, make_tuple #include <cstdint> // int64_t, int*_t #include <cstdio> // printf #include <cmath> // sqrt #include <map> // map #include <queue> // queue, priority_queue #include <set> // set #include <stack> // stack #include <deque> // deque #include <unordered_map> // unordered_map #include <unordered_set> // unordered_set #include <bitset> // bitset #include <cctype> // isupper, islower, isdigit, toupper, tolower #include <chrono> // Timer #include <cassert> #include <numeric> #include <iomanip> #include <limits> #include <random> using namespace std; #define set_dxy vi dx(4); dx = {1, -1, 0, 0}; vi dy(4); dy = {0, 0, 1, -1} #define ini(x) int x; cin >> x #define ind(x) double x; cin >> x #define ins(x) string x; cin >> x #define inc(x) char x; cin >> x #define inii(x, y) ini(x); ini(y) #define inis(x, y) ini(x); ins(y) #define insi(x, y) ins(x); ini(y) #define inss(x, y) ins(x); ins(y) #define iniii(x, y, z) inii(x, y); ini(z); #define invi(vec, x); vi vec(x); rep(i, x){cin >> vec.at(i);} #define endl "\n" #define space << " " << #define under(N) fixed << setprecision(N) #define abssort(aaa) sort(all(aaa)); ranges::sort(aaa,greater{},[](const auto a){return abs(a);}); reverse(all(aaa)) #define pi pair<int, int> #define mp make_pair #define mi map<int, int> #define mis map<int, set<int>> #define vi vector<int> #define vd vector<double> #define vc vector<char> #define vs vector<string> #define vb vector<bool> #define vpi vector<pi> #define si set<int> #define qi queue<int> #define vvi vector<vi> #define vvvi vector<vvi> #define vvvvi vector<vvvi> #define vvc vector<vc> #define tat(v, i, j) v.at(i).at(j) #define cy cout << "Yes" << endl #define cn cout << "No" << endl #define dame cout << -1 << endl #define check cout << "check" << endl #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define doing(P) sort(all(P));do #define did(P) while(next_permutation(all(P))) #define rep(i, n) for (int i = 0; i < n; i++) #define orep(i, n) for (int i = 1; i <= n; i++) #define rrep(i, n) for (int i = n - 1; i >= 0; i--) #define nfor(i, a, b) for (int i = a; i < b; i++) #define dfor(i, a, b) for (int i = a; i > b; i--) #define allout(x) cout << "all:" << endl; for (auto aaa : x) {cout << aaa << " ";} cout << endl; cout << "----------end" << endl; #define pairout(x) cout << "f:" << x.first << " s:" << x.second << endl; cout << "----------end" << endl; #define tallout(x) cout << "tall:" << endl; for (auto aaa : x) {for (auto bbb : aaa) {cout << bbb << " ";} cout << endl;} cout << "----------end" << endl; #define queout(q) cout << "queue:" << endl; while (!q.empty()) {cout << q.front() << " "; q.pop();} cout << endl; cout << "----------end" << endl; #define topout(x) cout << "top:" << endl; while (!x.empty()) {cout << x.top() << " "; x.pop();} cout << endl; cout << "----------end" << endl; #define allchar 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z' #define ALLchar 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' #define int int64_t #define double long double #define uint unsigned long long #define modint const int mod = 998244353 #define INF 1LL<<60 template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; } template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; } uint abs_sqrt(uint n) { if (n == 0) return 0; uint rinzi = sqrt(n) - 1; return rinzi * (rinzi + 2) < n ? rinzi + 1 : rinzi; } class Timer { chrono::system_clock::time_point start; public: Timer() : start(chrono::system_clock::now()) {} double count() { chrono::duration<double> Time_ = chrono::system_clock::now() - start; return Time_.count(); } bool is_under(double x) { return (this->count()) < x; } }; bool out_glid(int i, int j, int h, int w) { if (i < 0 || h <= i || j < 0 || w <= j) return true; else return false; } #endif
結果
問題
点数
言語
結果
実行時間
メモリ
G - Contest
150
C++
AC
128 ms
10472 KiB