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
AC × 3
AC × 43
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