結果
| 問題 | No.3392 Count 23578 Sequence |
| コンテスト | |
| ユーザー |
yt142857
|
| 提出日時 | 2025-11-23 19:33:49 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,594 bytes |
| コンパイル時間 | 2,775 ms |
| コンパイル使用メモリ | 278,632 KB |
| 実行使用メモリ | 11,208 KB |
| 最終ジャッジ日時 | 2025-11-28 21:01:48 |
| 合計ジャッジ時間 | 50,348 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 34 TLE * 13 |
ソースコード
//嘘解法&チャッピー翻訳
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
if (!(cin >> n)) return 0;
vector<long long> s(n);
for (int i = 0; i < n; ++i) cin >> s[i];
long long ans = 0;
// 最初の for i in range(n)
for (int i = 0; i < n; ++i) {
int left = 0;
int right = min(i, n - i - 1) + 1;
while (right > left + 1) {
int mid = (left + right) / 2;
bool p = true;
int start = max(mid - 100, 0);
for (int j = start; j <= mid; ++j) {
if (s[i + j] + s[i - j] != s[i] * 2) {
p = false;
break; // Python の元ループは break しないが、ここで早期脱出しても結果は同じです
}
}
if (p) left = mid;
else right = mid;
}
ans += left;
}
// 次の for i in range(1, n)
for (int i = 1; i < n; ++i) {
int left = 1;
int right = min(i, n - i) + 1;
while (right > left + 1) {
int mid = (left + right) / 2;
bool p = true;
int start = max(mid - 100, 1);
for (int j = start; j <= mid; ++j) {
if (s[i - j] + s[i + j - 1] != s[i - 1] + s[i]) {
p = false;
break;
}
}
if (p) left = mid;
else right = mid;
}
ans += left;
}
cout << (ans + n) << '\n';
return 0;
}
yt142857