求D题的代码我的为什么超时了啊啊啊啊啊啊
有D的代码吗?我的为什么超时了啊啊啊啊啊啊
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n,ff=0;
cin>>n;
if(n==1)
{
cin>>n;
if(n==1) cout<<1;
else cout<<-1;
return 0;
}
vector<int> vec(n),vec1(n,0),vec2(n,0);
for(int i=0;i<n;i++)
{
cin>>vec[i];
if(i!=0)
{
if(vec[i-1]<vec[i]||vec[0]%vec[i]!=0) ff=-1;
}
}
if(ff==-1)
{
cout<<-1;return 0;
}
vec1[0]=vec[0];
vec2[vec[0]-1]=1;
for(int i=1;i<n;i++)
{
int tt=0;
for(int j=vec[i];j<=n;j+=vec[i])
{
if(vec2[j-1]==0&&j%vec[i]==0)
{
vec2[j-1]=1;
vec1[i]=j;tt=1;break;
}
else continue;
}
if(tt==0) {ff=-1;break;}
}
if(ff==-1){cout<<-1;return 0;}
else{
for(int i=0;i<n;i++)
{
cout<<vec1[i];
if(i!=n-1) cout<<" ";
}
}
return 0;
}