Runtime Error
Code
#include <bits/stdc++.h>
using namespace std;
bool isitPrime(int n) // time complexity=O(sqrt(n))
{
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
return false;
}
return true;
}
int main() // find smallest prime factor of a number
{
int t;
cin >> t;
while (t--)
{
int x;
cin >> x;
vector<int> v(x + 1, 0);
for (int i = 1; i <= x; i++)
{
cin >> v[i];
}
map<int, vector<int>> mp;
for (int j = 1; j <= x; j++)
{
int n;
n = j;
int spf;
if (isitPrime(n))
{
spf = n;
}
else
{
for (int i = 2; i * i <= n; i++)
{
if (n % i == 0)
{
spf = i;
break;
}
}
}
mp[spf].push_back(j);
}
vector<int> ans(x + 1, 0);
for (auto it : mp)
{
vector<pair<int, int>> pr;
for (auto val : it.second)
{
pr.push_back({v[val], val});
}
sort(pr.begin(), pr.end());
int val = 1;
for (int i = 0; i < pr.size(); i++)
{
ans[pr[i].second] = val++;
}
for (int i = 0; i < pr.size(); i++)
{
int cnt = 0;
for (int j = i + 1; j < pr.size(); j++)
{
if (ans[pr[i].second] > ans[j])
{
cnt++;
}
}
if (cnt != v[pr[i].second])
{
cout << "NO" << endl;
return 0;
}
}
}
cout << "YES" << endl;
for (int i = 1; i <= x; i++)
{
cout << ans[i] << " ";
}
cout << endl;
}
return 0;
}
Information
- Submit By
- Type
- Submission
- Problem
- P1163 Roy and Array Construction
- Contest
- Brain Booster #8
- Language
- C++17 (G++ 13.2.0)
- Submit At
- 2025-02-17 16:59:58
- Judged At
- 2025-02-17 16:59:58
- Judged By
- Score
- 0
- Total Time
- 1ms
- Peak Memory
- 532.0 KiB