#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { long long i, j; long long n, k; vectord; vectorlist(200005, -1); cin >> n >> k; for (i = 1; i <= n; i++) { long long num; cin >> num; d.push_back(num); list[(int)num] = i; } long long cnt = 0; for (i = 1; i <= n; i++) { if (d[i - 1] != i) { int num = list[d[i - 1]]; // 正しくない数字を int num2 = list[i]; //正しい数字の位置を取得 int tmp = d[i - 1]; d[i - 1] = i; d[num2 - 1] = tmp; //list[d[i - 1]] = num2; list[tmp] = num2; list[i] = num; cnt++; } } //cout << cnt << endl; if (cnt == 0) { if (k % 2 == 0) { cout << "YES" << endl; } else { cout << "NO" << endl; } } else if (cnt > k) { cout << "NO" << endl; } else if(cnt == k){ cout << "YES" << endl; } else if (cnt < k) { if ((k - cnt) % 2 == 0) { cout << "YES" << endl; } else { cout << "NO" << endl; } } getchar(); getchar(); return 0; }