結果
| 問題 |
No.1371 交換門松列・松
|
| コンテスト | |
| ユーザー |
SSRS
|
| 提出日時 | 2021-01-29 22:58:26 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,215 bytes |
| コンパイル時間 | 1,651 ms |
| コンパイル使用メモリ | 169,680 KB |
| 実行使用メモリ | 12,444 KB |
| 最終ジャッジ日時 | 2024-06-27 09:23:58 |
| 合計ジャッジ時間 | 7,666 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 12 WA * 3 TLE * 1 -- * 13 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
bool is_kadomatsu(int a, int b, int c){
return (b < a && b < c || b > a && b > c) && a != c;
}
int main(){
int N;
cin >> N;
vector<int> A(N);
for (int i = 0; i < N; i++){
cin >> A[i];
A[i]--;
}
if (A[1] < A[0]){
for (int i = 0; i < N; i++){
A[i] = N - 1 - A[i];
}
}
long long ans = 0;
for (int i = 0; i < N; i++){
for (int j = i + 1; j < min(i + 5, N); j++){
swap(A[i], A[j]);
bool ok = true;
for (int k = i - 2; k <= j; k++){
if (0 <= k && k < N - 2){
if (!is_kadomatsu(A[k], A[k + 1], A[k + 2])){
ok = false;
}
}
}
if (ok){
ans++;
}
swap(A[i], A[j]);
}
}
vector<int> L(N, -1), R(N, N);
for (int i = 0; i < N - 2; i++){
if (i % 2 == 0){
R[i] = min(R[i], A[i + 1]);
R[i + 2] = min(R[i + 2], A[i + 1]);
} else {
L[i] = max(L[i], A[i + 1]);
L[i + 2] = max(L[i + 2], A[i + 1]);
}
}
for (int i = 0; i < N; i++){
for (int j = i + 5; j < N; j++){
if (L[i] <= A[j] && A[j] <= R[i] && L[j] <= A[i] && A[i] <= R[j]){
ans++;
}
}
}
cout << ans << endl;
}
SSRS