Submission #61900445


Source Code Expand

Copy
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;
int main() {
ll n, m;
cin >> n >> m;
vector<ll> a(n);
for (ll i = 0; i < n; ++i) cin >> a[i];
ull l = 0, r = 1LL << 60;
while (r - l > 1) {
ull mid = (r + l) / 2;
ull c = 0;
bool overflow = false;
for (ll i = 0; i < n; ++i) {
ull x = (mid / a[i] + 1) / 2;
if (x > (1LL << 30)) { // 2^30
overflow = true;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ull = unsigned long long;

int main() {
    ll n, m;
    cin >> n >> m;
    vector<ll> a(n);
    for (ll i = 0; i < n; ++i) cin >> a[i];

    ull l = 0, r = 1LL << 60;
    while (r - l > 1) {
        ull mid = (r + l) / 2;
        ull c = 0;
        bool overflow = false;

        for (ll i = 0; i < n; ++i) {
            ull x = (mid / a[i] + 1) / 2;
            if (x > (1LL << 30)) { // 2^30を超えるとオーバーフローの可能性
                overflow = true;
                break;
            }
            ull temp = x * x;
            if (temp > ULLONG_MAX / a[i]) { // オーバーフロー検出
                overflow = true;
                break;
            }
            c += temp * a[i];
            if (c >= m) break; // これ以上計算する必要はない
        }

        if (overflow || c >= m) r = mid;
        else l = mid;
    }

    ull res = 0, cost = 0;
    for (ll i = 0; i < n; ++i) {
        ull x = (l / a[i] + 1) / 2;
        res += x;

        if (x > 0) {
            ull temp = x * x;
            if (temp > ULLONG_MAX / a[i]) continue; // オーバーフローなら無視
            cost += temp * a[i];
        }
    }

    for (ll i = 0; i < n; ++i) {
        ull x = ((l + 1) / a[i] + 1) / 2;
        if (x > 0 && l + 1 == (2 * x - 1) * a[i]) {
            ull temp = (2 * x - 1) * a[i];
            if (cost + temp <= m) {
                res++;
                cost += temp;
            }
        }
    }

    cout << res << endl;
    return 0;
}

Submission Info

Submission Time
Task E - Square Price
User po1
Language C++ 20 (gcc 12.2)
Score 475
Code Size 1646 Byte
Status AC
Exec Time 77 ms
Memory 4904 KiB

Compile Error

Main.cpp: In function ‘int main()’:
Main.cpp:30:19: warning: comparison of integer expressions of different signedness: ‘ull’ {aka ‘long long unsigned int’} and ‘ll’ {aka ‘long long int’} [-Wsign-compare]
   30 |             if (c >= m) break; // これ以上計算する必要はない
      |                 ~~^~~~
Main.cpp:33:27: warning: comparison of integer expressions of different signedness: ‘ull’ {aka ‘long long unsigned int’} and ‘ll’ {aka ‘long long int’} [-Wsign-compare]
   33 |         if (overflow || c >= m) r = mid;
      |                         ~~^~~~
Main.cpp:53:29: warning: comparison of integer expressions of different signedness: ‘ull’ {aka ‘long long unsigned int’} and ‘ll’ {aka ‘long long int’} [-Wsign-compare]
   53 |             if (cost + temp <= m) {
      |                 ~~~~~~~~~~~~^~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 475 / 475
Status
AC × 2
AC × 26
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3528 KiB
00_sample_01.txt AC 1 ms 3468 KiB
01_random_00.txt AC 72 ms 4748 KiB
01_random_01.txt AC 72 ms 4732 KiB
01_random_02.txt AC 72 ms 4744 KiB
01_random_03.txt AC 71 ms 4812 KiB
01_random_04.txt AC 71 ms 4728 KiB
01_random_05.txt AC 70 ms 4768 KiB
01_random_06.txt AC 72 ms 4904 KiB
01_random_07.txt AC 73 ms 4740 KiB
01_random_08.txt AC 72 ms 4688 KiB
01_random_09.txt AC 72 ms 4672 KiB
01_random_10.txt AC 7 ms 3480 KiB
01_random_11.txt AC 63 ms 4460 KiB
01_random_12.txt AC 6 ms 3588 KiB
01_random_13.txt AC 14 ms 3524 KiB
01_random_14.txt AC 45 ms 4212 KiB
01_random_15.txt AC 68 ms 4816 KiB
01_random_16.txt AC 35 ms 3876 KiB
01_random_17.txt AC 22 ms 3596 KiB
01_random_18.txt AC 56 ms 4108 KiB
01_random_19.txt AC 61 ms 4472 KiB
01_random_20.txt AC 34 ms 4812 KiB
01_random_21.txt AC 77 ms 4732 KiB
01_random_22.txt AC 1 ms 3600 KiB
01_random_23.txt AC 1 ms 3468 KiB


2025-06-20 (Fri)
00:53:06 +09:00