結果
問題 | 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;}