Submission #64252544
Source Code Expand
#include<bits/stdc++.h>
using namespace std;
typedef long long i64;
constexpr double pi = acos(-1.0);
namespace Poly {
void FFT(vector<complex<double>> &s, int n, int o) {
//
vector<int> rev(n);
for(int i = 1; i < n; i++) {
rev[i] = (rev[i >> 1] >> 1) | ((i & 1) ? (n >> 1) : 0);
}
for(int i = 0; i < n; i++) {
if(i < rev[i]) swap(s[i], s[rev[i]]);
}
//
for(int i = 2; i <= n; i <<= 1) {
complex<double> wn(cos(2 * pi / i), o * sin(2 * pi / i));
for(int j = 0; j < n; j += i) {
complex<double> wi(1, 0);
for(int k = 0; k < (i >> 1); k++) {
auto x = s[j + k], y = wi * s[j + (i >> 1) + k];
s[j + k] = x + y, s[j + (i >> 1) + k] = x - y;
wi *= wn;
}
}
}
}
void DFT(vector<complex<double>> &s, int n) { FFT(s, n, 1); }
void IDFT(vector<complex<double>> &s, int n) { FFT(s, n, -1); }
}
int main() {
cin.tie(nullptr) -> sync_with_stdio(false);
int n;
cin >> n;
vector<int> s(n + 1);
for(int i = 1; i <= n; i++) {
cin >> s[i];
}
int w = *max_element(s.begin() + 1, s.end()); // w 次多项式
int k = __lg(2 * w) + 1, len = (1 << k);
vector<complex<double>> a(len);
vector<int> cnt0(w + 1);
for(int i = 1; i <= n; i++) {
cnt0[s[i]]++;
}
for(int i = 1; i <= w; i++) {
a[i].real(cnt0[i]);
}
Poly::DFT(a, len);
for(int i = 0; i < len; i++) {
a[i] *= a[i];
}
Poly::IDFT(a, len);
vector<int> cnt(2 * w + 1);
for(int i = 0; i <= 2 * w; i++) {
int x = (int)round(a[i].real() / len);
cnt[i] = x;
}
i64 ans = 0;
for(int i = 1; i <= w; i++) {
// x + y = 2 * i
if(cnt0[i]) {
i64 add = (cnt[2 * i] - 1) / 2;
ans += add;
}
}
cout << ans << '\n';
return 0;
}
Submission Info
| Submission Time | |
|---|---|
| Task | G - Fine Triplets |
| User | dengstar |
| Language | C++ 20 (gcc 12.2) |
| Score | 600 |
| Code Size | 1996 Byte |
| Status | AC |
| Exec Time | 285 ms |
| Memory | 52412 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample_01.txt, sample_02.txt, sample_03.txt |
| All | sample_01.txt, sample_02.txt, sample_03.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01.txt | AC | 1 ms | 3728 KiB |
| sample_02.txt | AC | 93 ms | 25836 KiB |
| sample_03.txt | AC | 1 ms | 3740 KiB |
| test_01.txt | AC | 1 ms | 3636 KiB |
| test_02.txt | AC | 199 ms | 48332 KiB |
| test_03.txt | AC | 1 ms | 3784 KiB |
| test_04.txt | AC | 1 ms | 3796 KiB |
| test_05.txt | AC | 206 ms | 48316 KiB |
| test_06.txt | AC | 217 ms | 48364 KiB |
| test_07.txt | AC | 209 ms | 48320 KiB |
| test_08.txt | AC | 212 ms | 48340 KiB |
| test_09.txt | AC | 1 ms | 3708 KiB |
| test_10.txt | AC | 210 ms | 48244 KiB |
| test_11.txt | AC | 1 ms | 3848 KiB |
| test_12.txt | AC | 208 ms | 48112 KiB |
| test_13.txt | AC | 1 ms | 3792 KiB |
| test_14.txt | AC | 211 ms | 48344 KiB |
| test_15.txt | AC | 1 ms | 3804 KiB |
| test_16.txt | AC | 218 ms | 48176 KiB |
| test_17.txt | AC | 3 ms | 4068 KiB |
| test_18.txt | AC | 199 ms | 48396 KiB |
| test_19.txt | AC | 3 ms | 4188 KiB |
| test_20.txt | AC | 208 ms | 48316 KiB |
| test_21.txt | AC | 23 ms | 8844 KiB |
| test_22.txt | AC | 202 ms | 48380 KiB |
| test_23.txt | AC | 25 ms | 9052 KiB |
| test_24.txt | AC | 198 ms | 48240 KiB |
| test_25.txt | AC | 206 ms | 48832 KiB |
| test_26.txt | AC | 213 ms | 48944 KiB |
| test_27.txt | AC | 238 ms | 50848 KiB |
| test_28.txt | AC | 251 ms | 51928 KiB |
| test_29.txt | AC | 241 ms | 50464 KiB |
| test_30.txt | AC | 238 ms | 50464 KiB |
| test_31.txt | AC | 241 ms | 50272 KiB |
| test_32.txt | AC | 264 ms | 52296 KiB |
| test_33.txt | AC | 271 ms | 52412 KiB |
| test_34.txt | AC | 276 ms | 52168 KiB |
| test_35.txt | AC | 272 ms | 52164 KiB |
| test_36.txt | AC | 273 ms | 52232 KiB |
| test_37.txt | AC | 273 ms | 52280 KiB |
| test_38.txt | AC | 270 ms | 52236 KiB |
| test_39.txt | AC | 276 ms | 52252 KiB |
| test_40.txt | AC | 285 ms | 52300 KiB |