50332023-04-10 10:31:03horvathabelHázszámokcpp17Időlimit túllépés 0/100298ms5624 KiB
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
vector<int>darab;
int n;
bool check(int x){
    int a=x;
    vector<int> valt;
    vector<int> db;
    db.resize(n,0);
    while (x>0){
        valt.push_back(x%n);
        x/=n;
    }
    int kell=pow(n,valt.size()-1);

    reverse(valt.begin(), valt.end());
    for (int i=0; i<n;i++){
        db[i]=kell;
    }
    int cnt=a-(kell-1);
    int szamlalo=1;
    for (int i=1; i<=valt.size();i++){
        int h=0;
        db[0]-=szamlalo;

        if (i==valt.size()){
            h=1;
            db[0]+=szamlalo;
        }
        for (int j=1; j<=cnt;j++){
            db[h]++;
            if (j%szamlalo==0){
                h++;
                if (h==n) h=0;
            }
        }
        szamlalo*=n;
    }
    for (int i=0; i<n;i++){
        if (db[i]>darab[i]) return false;
    }
    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin>>n;

    for (int i=0; i<n;i++){
        int x;
        cin>>x;
        darab.push_back(x);
    }
    int l=0, r=1e12;
    while (l<r){
        int m=(l+r)/2;
        if (check(m)){
            l=m;
        }
        else{
            r=m;
        }
        cout<<r<<" "<<m<<endl;
    }
    cout<<r<<endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Időlimit túllépés246ms1080 KiB
2Időlimit túllépés264ms1256 KiB
3Időlimit túllépés263ms1556 KiB
subtask20/25
4Időlimit túllépés280ms2420 KiB
5Időlimit túllépés264ms2636 KiB
6Időlimit túllépés273ms3024 KiB
7Időlimit túllépés298ms3168 KiB
8Időlimit túllépés256ms3240 KiB
9Időlimit túllépés263ms3472 KiB
10Időlimit túllépés268ms2748 KiB
11Időlimit túllépés264ms3716 KiB
12Időlimit túllépés247ms3788 KiB
13Időlimit túllépés275ms3784 KiB
14Időlimit túllépés263ms3824 KiB
15Időlimit túllépés284ms3824 KiB
16Időlimit túllépés284ms3968 KiB
17Időlimit túllépés250ms4208 KiB
18Időlimit túllépés280ms4340 KiB
19Időlimit túllépés244ms4452 KiB
subtask30/10
20Időlimit túllépés287ms4536 KiB
21Időlimit túllépés203ms4652 KiB
22Időlimit túllépés259ms4664 KiB
23Időlimit túllépés268ms4668 KiB
24Időlimit túllépés268ms4760 KiB
subtask40/15
25Időlimit túllépés256ms4752 KiB
26Időlimit túllépés272ms4760 KiB
27Időlimit túllépés273ms4756 KiB
28Időlimit túllépés259ms5036 KiB
29Időlimit túllépés268ms5084 KiB
30Időlimit túllépés256ms5092 KiB
31Időlimit túllépés268ms5212 KiB
32Időlimit túllépés280ms5288 KiB
33Időlimit túllépés263ms5424 KiB
subtask50/20
34Időlimit túllépés280ms5320 KiB
35Időlimit túllépés275ms5208 KiB
36Időlimit túllépés268ms5204 KiB
37Időlimit túllépés263ms5212 KiB
38Időlimit túllépés275ms5212 KiB
39Időlimit túllépés236ms5324 KiB
40Időlimit túllépés280ms5432 KiB
41Időlimit túllépés244ms5432 KiB
42Időlimit túllépés268ms5324 KiB
subtask60/30
43Időlimit túllépés239ms5340 KiB
44Időlimit túllépés252ms5248 KiB
45Időlimit túllépés246ms4664 KiB
46Időlimit túllépés275ms5352 KiB
47Időlimit túllépés280ms5468 KiB
48Időlimit túllépés279ms5368 KiB
49Időlimit túllépés263ms5368 KiB
50Időlimit túllépés275ms5476 KiB
51Időlimit túllépés268ms5376 KiB
52Időlimit túllépés272ms4688 KiB
53Időlimit túllépés280ms5624 KiB
54Időlimit túllépés272ms5592 KiB
55Időlimit túllépés270ms5404 KiB
56Időlimit túllépés254ms5468 KiB
57Időlimit túllépés263ms5476 KiB
58Időlimit túllépés268ms5480 KiB
59Időlimit túllépés264ms5488 KiB
60Időlimit túllépés273ms5392 KiB