Submission #1694053
Source Code Expand
#include<cstdio> #include<algorithm> #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; typedef long long ll; const int maxn=100000+10,mo=1000000007; int f[maxn],g[maxn],num[maxn],a[maxn],h[maxn],go[maxn],nxt[maxn],d[maxn]; int bz[maxn]; int i,j,k,l,r,s,t,n,m,tot,ans; bool czy; void add(int x,int y){ go[++tot]=y; nxt[tot]=h[x]; h[x]=tot; } bool pd(int x){ if (d[x]>1) return 0; bz[x]=1; if (!d[x]) return 1; int t=h[x]; bool gjx=pd(go[t]); g[x]=g[go[t]]+1; return gjx; } int main(){ scanf("%d",&n); fo(i,1,n){ scanf("%d",&a[i]); d[a[i]]++; if (d[a[i]]>2){ printf("0\n"); return 0; } add(a[i],i); } ans=1; fo(i,1,n) if (!bz[i]){ j=i; while (!bz[j]){ bz[j]=1; j=a[j]; } while (bz[j]==1){ bz[j]=2; j=a[j]; } k=j; czy=1; s=0; while (1){ s++; if (d[j]>1){ czy=0; t=h[j]; while (t){ if (bz[go[t]]!=2){ l=go[t]; break; } t=nxt[t]; } if (!pd(l)){ printf("0\n"); return 0; } g[j]=g[l]+1; } j=a[j]; if (j==k) break; } if (czy){ num[s]++; continue; } while (d[j]==1) j=a[j]; k=j;s=0; while (1){ j=a[j]; s++; if (d[j]>1){ if (g[j]>s){ printf("0\n"); return 0; } else if (g[j]<s) ans=(ll)ans*2%mo; s=0; } if (j==k) break; } } fo(i,1,n){ if (i==1) k=1; else if (i%2==1) k=2; else k=1; f[0]=1; fo(j,1,num[i]){ f[j]=(ll)f[j-1]*k%mo; if (j>=2) (f[j]+=(ll)f[j-2]*(j-1)%mo*i%mo)%=mo; } ans=(ll)ans*f[num[i]]%mo; } (ans+=mo)%=mo; printf("%d\n",ans); }
Submission Info
Submission Time | |
---|---|
Task | E - Next or Nextnext |
User | werkeytom |
Language | C++14 (GCC 5.4.1) |
Score | 1400 |
Code Size | 1725 Byte |
Status | AC |
Exec Time | 20 ms |
Memory | 4480 KB |
Compile Error
./Main.cpp: In function ‘int main()’: ./Main.cpp:26:16: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&n); ^ ./Main.cpp:28:20: 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 | 1400 / 1400 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt |
All | 0_00.txt, 0_01.txt, 0_02.txt, 0_03.txt, 0_04.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt, 1_46.txt, 1_47.txt, 1_48.txt, 1_49.txt, 1_50.txt, 1_51.txt, 1_52.txt, 1_53.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
0_00.txt | AC | 1 ms | 128 KB |
0_01.txt | AC | 1 ms | 128 KB |
0_02.txt | AC | 1 ms | 128 KB |
0_03.txt | AC | 1 ms | 128 KB |
0_04.txt | AC | 1 ms | 128 KB |
1_00.txt | AC | 1 ms | 128 KB |
1_01.txt | AC | 14 ms | 2944 KB |
1_02.txt | AC | 15 ms | 2688 KB |
1_03.txt | AC | 15 ms | 2688 KB |
1_04.txt | AC | 18 ms | 2560 KB |
1_05.txt | AC | 18 ms | 2560 KB |
1_06.txt | AC | 18 ms | 2560 KB |
1_07.txt | AC | 16 ms | 2560 KB |
1_08.txt | AC | 20 ms | 2560 KB |
1_09.txt | AC | 8 ms | 1792 KB |
1_10.txt | AC | 19 ms | 2560 KB |
1_11.txt | AC | 15 ms | 2560 KB |
1_12.txt | AC | 20 ms | 4480 KB |
1_13.txt | AC | 20 ms | 4480 KB |
1_14.txt | AC | 18 ms | 4480 KB |
1_15.txt | AC | 20 ms | 3968 KB |
1_16.txt | AC | 17 ms | 3968 KB |
1_17.txt | AC | 17 ms | 3968 KB |
1_18.txt | AC | 17 ms | 2432 KB |
1_19.txt | AC | 17 ms | 2560 KB |
1_20.txt | AC | 19 ms | 2432 KB |
1_21.txt | AC | 20 ms | 2560 KB |
1_22.txt | AC | 20 ms | 3072 KB |
1_23.txt | AC | 20 ms | 2944 KB |
1_24.txt | AC | 18 ms | 2944 KB |
1_25.txt | AC | 20 ms | 2944 KB |
1_26.txt | AC | 18 ms | 2816 KB |
1_27.txt | AC | 19 ms | 2944 KB |
1_28.txt | AC | 15 ms | 2944 KB |
1_29.txt | AC | 15 ms | 2944 KB |
1_30.txt | AC | 17 ms | 2560 KB |
1_31.txt | AC | 17 ms | 2560 KB |
1_32.txt | AC | 18 ms | 2560 KB |
1_33.txt | AC | 18 ms | 2560 KB |
1_34.txt | AC | 19 ms | 2816 KB |
1_35.txt | AC | 19 ms | 2944 KB |
1_36.txt | AC | 14 ms | 2816 KB |
1_37.txt | AC | 16 ms | 2944 KB |
1_38.txt | AC | 19 ms | 2944 KB |
1_39.txt | AC | 19 ms | 2944 KB |
1_40.txt | AC | 13 ms | 2944 KB |
1_41.txt | AC | 15 ms | 2944 KB |
1_42.txt | AC | 16 ms | 2432 KB |
1_43.txt | AC | 16 ms | 2560 KB |
1_44.txt | AC | 16 ms | 2560 KB |
1_45.txt | AC | 16 ms | 2560 KB |
1_46.txt | AC | 18 ms | 2944 KB |
1_47.txt | AC | 17 ms | 2944 KB |
1_48.txt | AC | 15 ms | 2944 KB |
1_49.txt | AC | 15 ms | 2944 KB |
1_50.txt | AC | 16 ms | 2944 KB |
1_51.txt | AC | 16 ms | 2816 KB |
1_52.txt | AC | 13 ms | 2944 KB |
1_53.txt | AC | 16 ms | 2944 KB |