/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 536.0 KiB
#2 Wrong Answer 2ms 324.0 KiB
#3 Wrong Answer 2ms 320.0 KiB
#4 Wrong Answer 2ms 320.0 KiB
#5 Wrong Answer 3ms 576.0 KiB
#6 Wrong Answer 21ms 588.0 KiB
#7 Wrong Answer 201ms 1.789 MiB
#8 Wrong Answer 210ms 1.969 MiB
#9 Wrong Answer 212ms 1.918 MiB
#10 Wrong Answer 189ms 704.0 KiB
#11 Wrong Answer 200ms 1.648 MiB

Code

#include <bits/stdc++.h>
using namespace std;
#define int long long
int ans=0;

int canAchieveTarget(int n, int k, int target) {
    // To make all elements at least `target`, each element needs to be incremented to `target`
    // The total operations needed to achieve this
    int requiredOps = target * n;  // Total operations needed to set all elements to `target`

    return (target*n)*(k-(target*n));  // Check if we have enough operations
}

void solve() {
    int n, k;
    cin >> n >> k;
    ans=min(n, k-n);
    ans=max(ans, 0ll);
    if(ans==0){
        cout<<0<<endl;
        return;
    }

    // Binary search for the maximum value of `target` (Y)
    int left = 0, right = n, bestTarget = 0;

    while (left <= right) {
        int mid = (left + right) / 2;

        if (canAchieveTarget(n, k, mid)>ans) {
            bestTarget = mid;
            left = mid + 1;  // Try for a larger target
        } else {
            right = mid - 1;  // Try for a smaller target
        }
    }

    // The final result is X * Y, where X = K - (N * bestTarget)
    int X = k - (n * bestTarget);
    int Y = bestTarget;

    cout << X * Y << endl;
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int t;
    cin >> t;

    while (t--) {
        solve();
    }

    return 0;
}

Information

Submit By
Type
Submission
Problem
P1092 Bitwise AND
Contest
Brain Booster #5
Language
C++17 (G++ 13.2.0)
Submit At
2024-09-05 17:02:50
Judged At
2024-10-03 13:05:27
Judged By
Score
1
Total Time
212ms
Peak Memory
1.969 MiB