玄学TLE,WA,又玄学AC
查看原帖
玄学TLE,WA,又玄学AC
247992
_Cloud_楼主2020/8/4 11:01
#include <cstdio>
#include <iostream>
#define ll long long
// using namespace std;

unsigned ll n, s, l, a[200005], h[200005];
ll left, right, mid, ans;

void init() {
    // scanf("%lld %lld %lld", &n, &s, &l);
    std::cin >> n >> s >> l;
    for (int i = 1; i <= n; i++)
        scanf("%lld", &h[i]);
    for (int i = 1; i <= n; i++)
        scanf("%lld", &a[i]);
    return;
}

bool check(ll num) {
    unsigned ll sum = 0;
    for (int i = 1; i <= n; i++) {
        if (h[i] + a[i] * num >= l) 
            sum += h[i] + a[i] * num;
        if (sum >= s)
            break;
    }
    if (sum >= s)
        return 1;
    return 0;
}

int main() {
    init();
    left = 0, right = 1000000000000000000ll;
    while (left <= right) {
        mid = (left + right) >> 1;
        if (check(mid))
            right = mid - 1, ans = mid;
        else
            left = mid + 1;
    }
    std::cout << ans;
    return 0;
}

AC Code

2020/8/4 11:01
加载中...