結果

問題 No.3065 Speedrun (Normal)
ユーザー drazerd
提出日時 2025-03-21 21:47:50
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 1,212 bytes
コンパイル時間 1,020 ms
コンパイル使用メモリ 79,200 KB
実行使用メモリ 5,888 KB
最終ジャッジ日時 2025-03-21 21:47:52
合計ジャッジ時間 1,845 ms
ジャッジサーバーID
(参考情報)
judge6 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 13
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct Problem {
    long long time_per_question, count;
};

bool compare(Problem a, Problem b) {
    return a.time_per_question < b.time_per_question;
}

long long max_problems_solved(long long A, long long B, long long C, long long D,
                              long long P, long long Q, long long R, long long S, long long T) {
    vector<Problem> problems = {{P, A}, {Q, B}, {R, C}, {S, D}};
    
    // Sort problems by time per question (greedy approach: solve easiest first)
    sort(problems.begin(), problems.end(), compare);
    
    long long solved = 0, time_used = 0;
    
    // Try solving problems greedily
    for (auto &p : problems) {
        long long max_can_solve = min(p.count, (T - time_used) / p.time_per_question);
        solved += max_can_solve;
        time_used += max_can_solve * p.time_per_question;
        
        if (time_used >= T) break; // No more time left
    }
    
    return solved;
}

int main() {
    long long A, B, C, D, P, Q, R, S, T;
    cin >> A >> B >> C >> D >> P >> Q >> R >> S >> T;
    
    cout << max_problems_solved(A, B, C, D, P, Q, R, S, T) << endl;
    return 0;
}
0