Submission #573004

#TimeUsernameProblemLanguageResultExecution timeMemory
573004groshiIntercastellar (JOI22_ho_t1)C++17
100 / 100
80 ms11216 KiB
#include<iostream>

using namespace std;
#define int long long
int teraz[300000];
int drzewo[1000000];
int pot=1;
int zap(int x,int co)
{
    if(x>pot)
        return teraz[x-pot];
    if(drzewo[x*2]>=co)
        return zap(x*2,co);
    else return zap(x*2+1,co-drzewo[x*2]);
}
int32_t main()
{
    cin.tie(0);
    cout.tie(0);
    ios_base::sync_with_stdio(0);
    int n,x;
    cin>>n;
    while(pot<=n)
        pot*=2;
    pot--;
    for(int i=1;i<=n;i++)
    {
        cin>>x;
        int ile=1;
        int pom=x;
        while(pom%2==0)
        {
            ile*=2;
            pom/=2;
        }
        drzewo[i+pot]=ile;
        teraz[i]=x/ile;
    }
    for(int i=pot;i>=1;i--)
        drzewo[i]=drzewo[i*2]+drzewo[i*2+1];
    int zapp;
    cin>>zapp;
    while(zapp--)
    {
        cin>>x;
        cout<<zap(1,x)<<"\n";
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...