結果
問題 | No.2382 Amidakuji M |
ユーザー |
![]() |
提出日時 | 2023-07-14 23:00:36 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 76 ms / 2,000 ms |
コード長 | 665 bytes |
コンパイル時間 | 2,245 ms |
コンパイル使用メモリ | 196,428 KB |
最終ジャッジ日時 | 2025-02-15 14:35:02 |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 19 |
ソースコード
#include <bits/stdc++.h> using namespace std; #include <atcoder/fenwicktree> long long inversion_number(vector<int> &a) { int n=a.size(); atcoder::fenwick_tree<int> ft(n); long long ret=0; for (int i=0;i<n;i++) { ret+=i-ft.sum(0,a[i]); ft.add(a[i],1); } return ret; } int main() { int n; long long m; cin>>n>>m; vector<int> p(n); for (int i=0;i<n;i++) { cin>>p[i]; p[i]--; } long long in=inversion_number(p); if (in==0) { cout<<0<<endl; return 0; } else if (in%2==1&&m%2==0) { cout<<-1<<endl; return 0; } long long tmp=(in+m-1)/m*m; while ((tmp-in)%2!=0) { tmp+=m; } cout<<tmp<<endl; }