/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 764.0 KiB
#2 Accepted 1ms 324.0 KiB
#3 Accepted 2ms 532.0 KiB
#4 Accepted 15ms 688.0 KiB
#5 Accepted 65ms 1.082 MiB
#6 Accepted 311ms 5.973 MiB
#7 Accepted 407ms 18.328 MiB
#8 Accepted 324ms 18.324 MiB
#9 Accepted 275ms 15.77 MiB
#10 Accepted 439ms 18.332 MiB
#11 Accepted 276ms 7.547 MiB
#12 Accepted 264ms 4.184 MiB
#13 Accepted 86ms 1.355 MiB
#14 Accepted 77ms 1.074 MiB
#15 Wrong Answer 324ms 18.34 MiB
#16 Accepted 274ms 15.598 MiB
#17 Accepted 310ms 15.668 MiB
#18 Accepted 143ms 2.34 MiB
#19 Accepted 149ms 2.77 MiB
#20 Accepted 215ms 4.199 MiB

Code

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
using minheap = priority_queue<long long, vector<long long>, greater<long long>>;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds; // find_by_order, order_of_key

#define ll long long
#define ld long double
#define MOD 1000000007
#define pie 2*(acos(0.0))
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define pb push_back
#define endl '\n'
#define lcm(a,b) (a*b)/(__gcd<ll>(a,b))
#define logb(base,val) log2l(val) / log2l(base)
#define print(v) for(auto e:v) cout<<e<<" "; cout<<endl;
#define printp(v) for(auto e:v) cout<<e.first<<" "<<e.second<<endl;
#define srt(v) sort(v.begin(),v.end())
#define rsrt(v) sort(v.rbegin(),v.rend())
#define life_is_a_race ios::sync_with_stdio(false); cin.tie(nullptr);

bool hoynai(int x,int ind,vector<int>&ans,pbds &s)
{
    if(s.size() <= x) return true;
    auto it = s.find_by_order(x);
    ans[ind] = *it;
    s.erase(it);
    return false;
}
void solve()
{
    int n; cin >> n;
    int a[n+1];
    for(int i=1;i<=n;i++) cin >> a[i];
    //if(a[1]) {cout<<"NO"; return;}

    vector<int> ans(n+1);
    ans[1] = 1;

    for(int i=2;i<=n;i++)
    {
        if(ans[i]) continue;
        int cnt = 0;
        for(int j=i;j<=n;j+=i)
        {
            if(ans[j]==0) ++cnt;
        }
        pbds s;
        for(int j=1;j<=cnt;j++) s.insert(j);
        for(int j=i;j<=n;j+=i)
        {
            if(ans[j]) continue;
            if(hoynai(a[j],j,ans,s))
            {
                cout<<"NO\n";
                return;
            }
        }
    }
    cout<<"YES\n";
    for(int i=1;i<=n;i++) cout<<ans[i]<<' '; cout<<'\n';
}
int main()
{
    life_is_a_race
    int t=1; 
    cin>>t;
    for(int i=1;i<=t;i++) solve();
}

Information

Submit By
Type
Submission
Problem
P1163 Roy and Array Construction
Language
C++17 (G++ 13.2.0)
Submit At
2025-02-07 17:47:41
Judged At
2025-02-08 16:52:14
Judged By
Score
98
Total Time
439ms
Peak Memory
18.34 MiB