結果
| 問題 | No.3441 Sort Permutation 2 |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-02-06 21:31:29 |
| 言語 | C++23 (gcc 15.2.0 + boost 1.89.0) |
| 結果 |
AC
|
| 実行時間 | 340 ms / 2,000 ms |
| コード長 | 555 bytes |
| 記録 | |
| コンパイル時間 | 3,508 ms |
| コンパイル使用メモリ | 337,772 KB |
| 実行使用メモリ | 7,848 KB |
| 最終ジャッジ日時 | 2026-02-06 21:31:48 |
| 合計ジャッジ時間 | 17,197 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 41 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int main(){
int n;
cin>>n;
vector<int> p(n);
for(int i=0;i<n;i++)cin>>p[i],p[i]--;
vector<int> d(n+1);
vector<bool> seen(n);
for(int i=0;i<n;i++){
if(seen[i])continue;
if(p[i]==i)continue;
int g=0;
int now=i;
int cnt=0;
do{
int nxt=p[now];
g=gcd(g,abs(nxt-now));
now=nxt;
cnt++;
//cout<<now<<endl;
seen[now]=true;
}while(now!=i);
d[g]+=cnt-1;
}
for(int i=1;i<n;i++){
int ans=0;
for(int j=i;j<=n;j+=i)ans+=d[j];
cout<<ans<<endl;
}
}