Submission #1327958

#TimeUsernameProblemLanguageResultExecution timeMemory
1327958idonoamHack (APIO25_hack)C++20
78.10 / 100
126 ms1268 KiB
#include "hack.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
/*
static int n = 0;
static int total_cost = 0;

long long collisions(std::vector<long long> x)
{
    total_cost += (int)x.size();
    if (total_cost > 1000000)
    {
        printf("Total cost exceeded 1,000,000\n");
        exit(0);
    }

    long long res = 0;

    std::map<int, int> table;
    std::set<long long> seen;
    for (long long v : x)
    {
        if (v < 1 || v > (long long)1e18)
        {
            printf("x[i] is out of range\n");
            exit(0);
        }

        if (seen.find(v) != seen.end())
        {
            printf("x has a duplicate element\n");
            exit(0);
        }

        seen.insert(v);

        res += table[v % n];
        table[v % n]++;
    }

    return res;
}
*/
int isbet(int a, int b)
{
    int c = (int)sqrt(b - a);
    vector<ll> vec;
    for (int i = 1; i <= c; i++)
    {
        vec.push_back(i);
    }
    for (int i = max(a,c) + c; i <= b; i += c)
    {
        vec.push_back(i);
    }
    vec.push_back(b + 1);
    return collisions(vec);
}
int hack()
{
    int mx = 1e9;
    int mn = 1;
    while (mx > mn + 1)
    {
        int c = (mx + mn) / 2;
        if (isbet(mn, c))
        {
            mx = c;
        }
        else
        {
            mn = c + 1;
        }
    }
    if (collisions({1, 1 + mn}))
        return mn;
    else
        return mn + 1;
}
/*
int main()
{
    int t;
    assert(1 == scanf("%d", &t));

    std::vector<int> ns(t);
    for (int i = 0; i < t; i++)
    {
        assert(1 == scanf("%d", &ns[i]));
    }

    for (int i = 0; i < t; i++)
    {
        total_cost = 0;
        n = ns[i];
        int ans = hack();
        printf("%d %d\n", ans, total_cost);
    }

    return 0;
}
    /* */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...