Submission #1870789
Source Code Expand
#include <cstdio> #include <cstring> #include <map> #define MAXN 2010 #define MAXM 100010 using namespace std; struct edge{ int to,next; edge(int _to=0,int _next=0):to(_to),next(_next){} }e[MAXM<<1]; int n,numn; int a[MAXN]; bool flag[10010]; int prime[10010],nump; int g[MAXM],nume; int d[MAXN][MAXN]; bool tag[MAXM],visit[MAXM],used[MAXM]; map<int,int> Sp; int c[MAXN],numc; int maxv[MAXN],totmax,totmax2; void addEdge(int u,int v){ e[nume]=edge(v,g[u]); g[u]=nume++; } int gcd(int x,int y){ if(!y) return x; return gcd(y,x%y); } void init(){ for(int i=2;i<10010;i++){ if(!flag[i]) prime[++nump]=i; for(int j=1;j<=nump && i*prime[j]<10010;j++){ flag[i*prime[j]]=1; if(i%prime[j]==0) break; } } } void pre_gao(int x,int v){ int v0=v; for(int i=1;i<=nump && prime[i]*prime[i]<=v0;i++) if(v%prime[i]==0){ while(v%prime[i]==0) v/=prime[i]; if(!Sp.count(prime[i])) Sp[prime[i]]=++numn; addEdge(x,Sp[prime[i]]); addEdge(Sp[prime[i]],x); } if(v>1){ if(!Sp.count(v)) Sp[v]=++numn; addEdge(x,Sp[v]); addEdge(Sp[v],x); } } void dfs(int x){ visit[x]=1; c[x]=numc; if(tag[x] && a[x]<maxv[numc]) maxv[numc]=a[x]; for(int i=g[x];~i;i=e[i].next) if(!used[e[i].to] && !visit[e[i].to]){ dfs(e[i].to); } } int gao(){ for(int i=1;i<=numn;i++) visit[i]=0; totmax2=totmax=numc=0; for(int i=1;i<=n;i++) if(!used[i] && !visit[i]){ maxv[++numc]=1<<30; dfs(i); if(maxv[numc]>totmax){ totmax2=totmax; totmax=maxv[numc]; }else if(maxv[numc]>totmax2) totmax2=maxv[numc]; } int minv=1<<30; for(int i=1;i<=n;i++) if(!used[i] && tag[i] && a[i]<minv){ if(maxv[c[i]]==totmax && a[i]<totmax2) continue; if(maxv[c[i]]!=totmax && a[i]<totmax) continue; minv=a[i]; } for(int i=1;i<=n;i++) if(!used[i] && tag[i] && a[i]==minv){ used[i]=1; for(int j=1;j<=n;j++) if(tag[j] && a[j]>a[i]) tag[j]=0; for(int j=1;j<=n;j++) if(!used[j] && !tag[j] && d[j][i]!=1) tag[j]=1; } return minv; } int main(){ memset(g,-1,sizeof g); init(); scanf("%d",&n); numn=n; for(int i=1;i<=n;i++){ scanf("%d",a+i); pre_gao(i,a[i]); } for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) d[i][j]=gcd(a[i],a[j]); for(int i=1;i<=n;i++) tag[i]=1; for(int i=1;i<=n;i++) printf("%d ",gao()); return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - Rearranging |
User | ez_zjt |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 2405 Byte |
Status | RE |
Exec Time | 808 ms |
Memory | 18176 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:105:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&n); ^ ./Main.cpp:108:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",a+i); ^
Judge Result
Set Name | Sample | All | ||||||
---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 1600 | ||||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample1.txt, sample2.txt |
All | sample1.txt, sample2.txt, in1.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in2.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in3.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in4.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in5.txt, in6.txt, in7.txt, in8.txt, in9.txt, sample1.txt, sample2.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
in1.txt | RE | 774 ms | 18176 KB |
in10.txt | RE | 763 ms | 18176 KB |
in11.txt | RE | 678 ms | 18048 KB |
in12.txt | RE | 685 ms | 18048 KB |
in13.txt | RE | 681 ms | 18048 KB |
in14.txt | RE | 683 ms | 18048 KB |
in15.txt | RE | 680 ms | 18048 KB |
in16.txt | RE | 794 ms | 18048 KB |
in17.txt | RE | 794 ms | 18048 KB |
in18.txt | RE | 792 ms | 18048 KB |
in19.txt | RE | 801 ms | 18048 KB |
in2.txt | RE | 763 ms | 18176 KB |
in20.txt | RE | 808 ms | 18048 KB |
in21.txt | RE | 504 ms | 18176 KB |
in22.txt | RE | 491 ms | 18176 KB |
in23.txt | RE | 505 ms | 18176 KB |
in24.txt | RE | 504 ms | 18176 KB |
in25.txt | RE | 503 ms | 18176 KB |
in26.txt | RE | 680 ms | 18048 KB |
in27.txt | RE | 683 ms | 18048 KB |
in28.txt | RE | 678 ms | 18048 KB |
in29.txt | RE | 682 ms | 18048 KB |
in3.txt | RE | 777 ms | 18176 KB |
in30.txt | RE | 681 ms | 18048 KB |
in31.txt | AC | 2 ms | 3968 KB |
in32.txt | AC | 2 ms | 3968 KB |
in33.txt | AC | 2 ms | 3968 KB |
in34.txt | RE | 541 ms | 18176 KB |
in35.txt | RE | 541 ms | 18176 KB |
in36.txt | RE | 721 ms | 18048 KB |
in37.txt | RE | 718 ms | 18048 KB |
in38.txt | RE | 717 ms | 18048 KB |
in39.txt | RE | 722 ms | 18048 KB |
in4.txt | RE | 774 ms | 18176 KB |
in40.txt | RE | 703 ms | 18048 KB |
in41.txt | RE | 718 ms | 18048 KB |
in42.txt | RE | 720 ms | 18048 KB |
in43.txt | RE | 715 ms | 18048 KB |
in44.txt | RE | 711 ms | 18048 KB |
in45.txt | RE | 717 ms | 18048 KB |
in5.txt | RE | 760 ms | 18176 KB |
in6.txt | RE | 778 ms | 18176 KB |
in7.txt | RE | 779 ms | 18176 KB |
in8.txt | RE | 774 ms | 18176 KB |
in9.txt | RE | 777 ms | 18176 KB |
sample1.txt | AC | 2 ms | 3968 KB |
sample2.txt | AC | 2 ms | 3968 KB |