Submission #101994
Source Code Expand
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=0;i<n;i++) #define foreach(it,X) for(__typeof(X.begin()) it=X.begin();it!=X.end();it++) #define fir first #define sec second //#define foreachM(it,X) for(map<int,int>::iterator it=X.begin();it!=X.end();it++) #define vi vector<int> #define pb push_back #define sz(x) ((int)(x).size()) typedef long long ll; ll N,K,b[100010]; int used[100010]; map<int,int> M; set<int> P; map<int,int> K2; map<int,ll> K3; vector<vector<int> > seq; int ans[100010]; int main(){ cin>>N>>K; rep(i,N)cin>>b[i],b[i]--; rep(i,N)if(!used[i]){ int cur=i; int len=0; vi v; while(!used[cur]){ used[cur]=1; v.pb(cur); len++; cur=b[cur]; } M[len]++; seq.pb(v); } foreach(it,M){ int L=it->fir; for(int i=2;i*i<=L;i++)if(L%i==0){ P.insert(i); while(L%i==0)L/=i; } if(L>1)P.insert(L); } foreach(it,P){ ll x=K; K3[*it]=1; while(x%(*it)==0){ K2[*it]++; K3[*it]*=*it; x/=*it; } } int combine=0; foreach(it,M){ ll len=it->fir,num=it->sec; foreach(it2,P){ ll p=*it2; if(len % p == 0){ if(num % K3[p] != 0){ return cout<<"Impossible"<<endl,0; } if(K3[p] != 1) combine=1; } } } if(combine)return cout<<"Ambiguous"<<endl,0; if(/*sz(K2)!=0*/K>=2){ ll minP = -1;//= K2.begin() -> fir; for(int i=2;i<100005;i++)if(K % i == 0){ minP = i; break; } if(minP == -1)goto end; foreach(it,M){ ll num=it->sec; if(num >= minP)return cout<<"Ambiguous"<<endl,0; } } end:; foreach(it,seq){ vi v=*it; vi w(sz(v)); ll cur=0; rep(i,sz(v)){ w[cur] = v[i]; cur += K; cur %= sz(v); } rep(i,sz(w)){ if(i<sz(w)-1) ans[w[i]] = w[i+1]; else ans[w[i]] = w[0]; } } rep(i,N)cout<<ans[i]+1<<(i==N-1 ? "\n":" "); }
Submission Info
Submission Time | |
---|---|
Task | H - Shuffling Machine |
User | wakaba |
Language | C++ (GCC 4.4.7) |
Score | 100 |
Code Size | 1882 Byte |
Status | AC |
Exec Time | 93 ms |
Memory | 4000 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 4, 40, 41, 42, 43, 44, 45, 46, 47, 48, 5, 6, 7, 8, 9 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
1 | AC | 22 ms | 708 KB |
10 | AC | 26 ms | 1048 KB |
11 | AC | 50 ms | 1832 KB |
12 | AC | 23 ms | 800 KB |
13 | AC | 57 ms | 2328 KB |
14 | AC | 69 ms | 2836 KB |
15 | AC | 92 ms | 3992 KB |
16 | AC | 72 ms | 2848 KB |
17 | AC | 71 ms | 2776 KB |
18 | AC | 71 ms | 2788 KB |
19 | AC | 87 ms | 3736 KB |
2 | AC | 21 ms | 792 KB |
20 | AC | 91 ms | 3688 KB |
21 | AC | 72 ms | 2340 KB |
22 | AC | 90 ms | 3360 KB |
23 | AC | 70 ms | 2344 KB |
24 | AC | 70 ms | 2336 KB |
25 | AC | 89 ms | 3828 KB |
26 | AC | 74 ms | 2764 KB |
27 | AC | 71 ms | 2844 KB |
28 | AC | 93 ms | 4000 KB |
29 | AC | 73 ms | 2900 KB |
3 | AC | 22 ms | 796 KB |
30 | AC | 71 ms | 2904 KB |
31 | AC | 91 ms | 3744 KB |
32 | AC | 73 ms | 2716 KB |
33 | AC | 73 ms | 2732 KB |
34 | AC | 73 ms | 2772 KB |
35 | AC | 21 ms | 804 KB |
36 | AC | 21 ms | 932 KB |
37 | AC | 22 ms | 848 KB |
38 | AC | 21 ms | 804 KB |
39 | AC | 20 ms | 796 KB |
4 | AC | 20 ms | 748 KB |
40 | AC | 21 ms | 796 KB |
41 | AC | 21 ms | 748 KB |
42 | AC | 22 ms | 808 KB |
43 | AC | 23 ms | 808 KB |
44 | AC | 22 ms | 928 KB |
45 | AC | 24 ms | 808 KB |
46 | AC | 22 ms | 804 KB |
47 | AC | 22 ms | 932 KB |
48 | AC | 22 ms | 800 KB |
5 | AC | 22 ms | 808 KB |
6 | AC | 21 ms | 928 KB |
7 | AC | 30 ms | 1068 KB |
8 | AC | 22 ms | 936 KB |
9 | AC | 22 ms | 928 KB |