結果
| 問題 |
No.3257 +|+
|
| コンテスト | |
| ユーザー |
nikoro256
|
| 提出日時 | 2025-09-05 23:16:38 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,372 bytes |
| コンパイル時間 | 3,413 ms |
| コンパイル使用メモリ | 286,424 KB |
| 実行使用メモリ | 22,052 KB |
| 最終ジャッジ日時 | 2025-09-05 23:16:46 |
| 合計ジャッジ時間 | 8,279 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 4 TLE * 1 -- * 28 |
ソースコード
#include <bits/stdc++.h>
// python->C++翻訳
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
if (!(cin >> N)) return 0;
vector<long long> A(N);
for (int i = 0; i < N; ++i) cin >> A[i];
// n = isqrt(4 * 10**5)
const long long n = (long long)floor(sqrt(400000.0L));
long long ans = 0;
// d : defaultdict(int)
unordered_map<long long, long long> d;
d.reserve((size_t)N * 2);
d.max_load_factor(0.7f);
// for ni in range(1, n+1):
for (long long ni = 1; ni <= n; ++ni) {
// for j in range(N):
for (int j = 0; j < N; ++j) {
long long key = A[j] - (long long)(j + 1) * ni;
long long need = -key; // -(A[j] - (j+1)*ni)
auto it = d.find(need);
if (it != d.end()) ans += it->second;
d[key] += 1;
}
d.clear();
}
// for ij in range(1, n+1):
for (long long ij = 1; ij <= n; ++ij) {
for (int j = 0; j < N; ++j) {
long long i = ij - j - 2; // i = ij-j-2
if (0 <= i && i < j && j < N) {
long long s = A[(int)i] + A[j];
if (s % ij == 0) {
long long ni = s / ij;
if (ni > n) ans += 1;
}
}
}
}
cout << ans << '\n';
return 0;
}
nikoro256