Submission #19065031


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

int64_t calc_lower_bound(int N, const vector<int64_t> &H_vec)
{
    int64_t lower = 0;
    for (int i = 0; i < N; ++i) {
        int64_t lower_i = H_vec.at(i);
        if (lower < lower_i)
            lower = lower_i;
    }
    return lower;
}

int64_t calc_upper_bound(int N, const vector<int64_t> &H_vec,
        const vector<int64_t> &S_vec)
{
    int64_t upper = 0;
    for (int i = 0; i < N; ++i) {
        int64_t upper_i = H_vec.at(i) + S_vec.at(i) * (N - 1);
        if (upper < upper_i)
            upper = upper_i;
    }
    return upper;
}

bool is_feasible(int N, const vector<int64_t> &H_vec,
        const vector<int64_t> &S_vec, int64_t score)
{
    vector<int64_t> limit_vec(N);
    for (int i = 0; i < N; ++i) {
        int64_t diff = score - H_vec.at(i);
        if (diff < 0)
            return false;
        int64_t limit = diff / S_vec.at(i);
        limit_vec.at(i) = limit;
    }
    sort(limit_vec.begin(), limit_vec.end());
    for (int i = 0; i < N; ++i) {
        if (limit_vec.at(i) < i)
            return false;
    }
    return true;
}

int main()
{
    int N;
    cin >> N;
    vector<int64_t> H_vec(N), S_vec(N);
    for (int i = 0; i < N; ++i) 
        cin >> H_vec.at(i) >> S_vec.at(i);
    int64_t ok = calc_upper_bound(N, H_vec, S_vec);
    int64_t ng = calc_lower_bound(N, H_vec) - 1;
    while (abs(ok - ng) > 1) {
        int64_t mid = (ok + ng) / 2;
        if (is_feasible(N, H_vec, S_vec, mid))
            ok = mid;
        else
            ng = mid;
    }
    cout << ok<< endl;
}

Submission Info

Submission Time
Task D - 射撃王
User atug
Language C++ (GCC 9.2.1)
Score 100
Code Size 1574 Byte
Status AC
Exec Time 404 ms
Memory 5636 KiB

Judge Result

Set Name Sample Subtask1 Subtask2
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 2
AC × 17
AC × 32
Set Name Test Cases
Sample subtask0-sample01.txt, subtask0-sample02.txt
Subtask1 subtask0-sample01.txt, subtask0-sample02.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt
Subtask2 subtask0-sample01.txt, subtask0-sample02.txt, subtask1-01.txt, subtask1-02.txt, subtask1-03.txt, subtask1-04.txt, subtask1-05.txt, subtask1-06.txt, subtask1-07.txt, subtask1-08.txt, subtask1-09.txt, subtask1-10.txt, subtask1-11.txt, subtask1-12.txt, subtask1-13.txt, subtask1-14.txt, subtask1-15.txt, subtask2-01.txt, subtask2-02.txt, subtask2-03.txt, subtask2-04.txt, subtask2-05.txt, subtask2-06.txt, subtask2-07.txt, subtask2-08.txt, subtask2-09.txt, subtask2-10.txt, subtask2-11.txt, subtask2-12.txt, subtask2-13.txt, subtask2-14.txt, subtask2-15.txt
Case Name Status Exec Time Memory
subtask0-sample01.txt AC 8 ms 3552 KiB
subtask0-sample02.txt AC 2 ms 3408 KiB
subtask1-01.txt AC 2 ms 3468 KiB
subtask1-02.txt AC 2 ms 3596 KiB
subtask1-03.txt AC 2 ms 3620 KiB
subtask1-04.txt AC 2 ms 3412 KiB
subtask1-05.txt AC 2 ms 3604 KiB
subtask1-06.txt AC 2 ms 3412 KiB
subtask1-07.txt AC 2 ms 3560 KiB
subtask1-08.txt AC 2 ms 3604 KiB
subtask1-09.txt AC 2 ms 3616 KiB
subtask1-10.txt AC 2 ms 3472 KiB
subtask1-11.txt AC 2 ms 3600 KiB
subtask1-12.txt AC 3 ms 3416 KiB
subtask1-13.txt AC 2 ms 3524 KiB
subtask1-14.txt AC 3 ms 3556 KiB
subtask1-15.txt AC 2 ms 3632 KiB
subtask2-01.txt AC 4 ms 3416 KiB
subtask2-02.txt AC 11 ms 3512 KiB
subtask2-03.txt AC 15 ms 3628 KiB
subtask2-04.txt AC 80 ms 3724 KiB
subtask2-05.txt AC 196 ms 4348 KiB
subtask2-06.txt AC 215 ms 5036 KiB
subtask2-07.txt AC 365 ms 5304 KiB
subtask2-08.txt AC 398 ms 5556 KiB
subtask2-09.txt AC 399 ms 5636 KiB
subtask2-10.txt AC 208 ms 5388 KiB
subtask2-11.txt AC 189 ms 5404 KiB
subtask2-12.txt AC 399 ms 5468 KiB
subtask2-13.txt AC 270 ms 5448 KiB
subtask2-14.txt AC 397 ms 5536 KiB
subtask2-15.txt AC 404 ms 5500 KiB