結果
| 問題 |
No.1368 サイクルの中に眠る門松列
|
| コンテスト | |
| ユーザー |
mmn15277198
|
| 提出日時 | 2021-01-31 14:13:44 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,355 bytes |
| コンパイル時間 | 842 ms |
| コンパイル使用メモリ | 76,480 KB |
| 実行使用メモリ | 8,040 KB |
| 最終ジャッジ日時 | 2024-06-28 22:57:42 |
| 合計ジャッジ時間 | 2,216 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 12 WA * 3 |
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using ll = long long;
int kado(int a , int b , int c){
if(a == b || b == c || c == a){
return 0;
}
if(b < a && b < c){
return a;
}
if(b > a && b > c){
return a;
}
return 0;
}
void solve(){
int n;
cin >> n;
vector<int> a1(n);
for(int i = 0; i < n; i++){
cin >> a1[i];
}
vector<int> a2 = a1;
a2.push_back(a1[0]);
a2.erase(a2.begin());
vector<int> a3 = a2;
a3.push_back(a2[0]);
a3.erase(a3.begin());
vector<int> dp1(n , 0);
dp1[0] = 0;
dp1[1] = 0;
dp1[2] = kado(a1[0] , a1[1] , a1[2]);
for(int i = 3; i < n; i++){
dp1[i] = max(dp1[i - 1] , kado(a1[i - 2] , a1[i - 1] , a1[i]) + dp1[i - 3]);
}
vector<int> dp2(n , 0);
dp2[0] = 0;
dp2[1] = 0;
dp2[2] = kado(a2[0] , a2[1] , a2[2]);
for(int i = 3; i < n; i++){
dp2[i] = max(dp2[i - 1] , kado(a2[i - 2] , a2[i - 1] , a2[i]) + dp2[i - 3]);
}
vector<int> dp3(n , 0);
dp3[0] = 0;
dp3[1] = 0;
dp3[2] = kado(a3[0] , a3[1] , a3[2]);
for(int i = 3; i < n; i++){
dp3[i] = max(dp3[i - 1] , kado(a3[i - 2] , a3[i - 1] , a3[i]) + dp3[i - 3]);
}
cout << max({dp1[n - 1] , dp2[n - 1] , dp3[n - 1]}) << endl;
}
int main() {
int t;
cin >> t;
for(int i = 0; i < t; i++)solve();
return 0;
}
mmn15277198