Submission #62554591


Source Code Expand

/*
           _                   _         _       __  __  _____ 
     /\   | |            /\   | |       | |     |  \/  |/ ____|
    /  \  | |__   ___   /  \  | |__   __| | ___ | \  / | |     
   / /\ \ | '_ \ / _ \ / /\ \ | '_ \ / _` |/ _ \| |\/| | |     
  / ____ \| |_) | (_) / ____ \| |_) | (_| | (_) | |  | | |____ 
 /_/    \_\_.__/ \___/_/    \_\_.__/ \__,_|\___/|_|  |_|\_____|
*/

// build command:
// g++ -std=gnu++17 -O3 -DDEBUG -g -fsanitize=signed-integer-overflow -fsanitize=bounds-strict -fsanitize=address -fsanitize=integer-divide-by-zero -fsanitize=float-divide-by-zero -fsanitize=pointer-overflow -fsanitize=shift-exponent -fsplit-stack -Wshadow -Wall -fconcepts -Wno-unused-result

// REMEMBER:
// BS, Offline, Persistent SegTree, SQRT, Treap, MaxFlow, FFT, Matrices

#include <bits/stdc++.h>
using namespace std;

#pragma GCC optimize("O3,unroll-loops")

// DEBUG STUFF
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }
template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; }
void dbg_out() { cerr << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cerr << ' ' << H; dbg_out(T...); }
#ifdef DEBUG
#define dbg(...) cerr << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#else
#define dbg(...)
#endif


#define F first
#define S second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) ((int)(x).size())

typedef long long ll;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;

// RANDOM NUMBER GENERATOR
mt19937 RNG(chrono::steady_clock::now().time_since_epoch().count());  
#define SHUF(v) shuffle(all(v), RNG); 
// Use mt19937_64 for 64 bit random numbers.

int getrand(int l,int r) {
	return uniform_int_distribution<int>(l, r)(RNG);
}

const ld eps = 1e-9;
const int mod = 1e9 + 7;
const int oo = 1e9 + 7;
const ll lloo = 1e18 + 7;
const int N = 1e6 + 7;

const double PI = acos(-1);
struct base {
  double a, b;
  base(double a = 0, double b = 0) : a(a), b(b) {}
  const base operator + (const base &c) const
    { return base(a + c.a, b + c.b); }
  const base operator - (const base &c) const
    { return base(a - c.a, b - c.b); }
  const base operator * (const base &c) const
    { return base(a * c.a - b * c.b, a * c.b + b * c.a); }
};
void fft(vector<base> &p, bool inv = 0) {
  int n = p.size(), i = 0;
  for(int j = 1; j < n - 1; ++j) {
    for(int k = n >> 1; k > (i ^= k); k >>= 1);
    if(j < i) swap(p[i], p[j]);
  }
  for(int l = 1, m; (m = l << 1) <= n; l <<= 1) {
    double ang = 2 * PI / m;
    base wn = base(cos(ang), (inv ? 1. : -1.) * sin(ang)), w;
    for(int i = 0, j, k; i < n; i += m) {
      for(w = base(1, 0), j = i, k = i + l; j < k; ++j, w = w * wn) {
        base t = w * p[j + l];
        p[j + l] = p[j] - t;
        p[j] = p[j] + t;
      }
    }
  }
  if(inv) for(int i = 0; i < n; ++i) p[i].a /= n, p[i].b /= n;
}
vector<long long> multiply(vector<int> &a, vector<int> &b) {
  int n = a.size(), m = b.size(), t = n + m - 1, sz = 1;
  while(sz < t) sz <<= 1;
  vector<base> x(sz), y(sz), z(sz);
  for(int i = 0 ; i < sz; ++i) {
    x[i] = i < (int)a.size() ? base(a[i], 0) : base(0, 0);
    y[i] = i < (int)b.size() ? base(b[i], 0) : base(0, 0);
  }
  fft(x), fft(y);
  for(int i = 0; i < sz; ++i) z[i] = x[i] * y[i];
  fft(z, 1);
  vector<long long> ret(sz);
  for(int i = 0; i < sz; ++i) ret[i] = (long long) round(z[i].a);
  while((int)ret.size() > 1 && ret.back() == 0) ret.pop_back();
  return ret;
}

void solve(int tc) {
	int n;
	cin >> n;
	vector<int> vec1(1e6);
	for(int i = 0 ; i < n ; i++) {
		int x;cin>> x;
		x--;
		vec1[x] = 1;
	}
	
	vector<int> vec2 = vec1;
	
	vector<ll> ret = multiply(vec1,vec2);
	
	ll ans = 0;
	for(int i = 0 ; i < sz(ret) ; i++) {
		if (vec1[i/2] == 0 || i%2 == 1) continue;
		dbg(i,ret[i]);
		ans += (ret[i]-1)/2;
	}
	cout << ans << '\n';
}

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	// freopen("in","r",stdin);
	// freopen("out","w",stdout);
	int T = 1;
	//cin >> T;
	for(int i = 0 ; i < T ; i++) solve(i+1);
	return 0;
}

Submission Info

Submission Time
Task G - Fine Triplets
User b4n4n4s
Language C++ 23 (gcc 12.2)
Score 600
Code Size 4365 Byte
Status AC
Exec Time 429 ms
Memory 126060 KiB

Compile Error

Main.cpp: In function ‘void solve(int)’:
Main.cpp:106:16: warning: unused parameter ‘tc’ [-Wunused-parameter]
  106 | void solve(int tc) {
      |            ~~~~^~

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 355 ms 125892 KiB
sample_02.txt AC 303 ms 125920 KiB
sample_03.txt AC 317 ms 126056 KiB
test_01.txt AC 327 ms 125796 KiB
test_02.txt AC 342 ms 125844 KiB
test_03.txt AC 320 ms 125800 KiB
test_04.txt AC 292 ms 125968 KiB
test_05.txt AC 296 ms 125836 KiB
test_06.txt AC 317 ms 125916 KiB
test_07.txt AC 293 ms 125956 KiB
test_08.txt AC 312 ms 125868 KiB
test_09.txt AC 311 ms 125964 KiB
test_10.txt AC 303 ms 125960 KiB
test_11.txt AC 281 ms 125856 KiB
test_12.txt AC 306 ms 125912 KiB
test_13.txt AC 313 ms 125964 KiB
test_14.txt AC 305 ms 125812 KiB
test_15.txt AC 295 ms 125888 KiB
test_16.txt AC 314 ms 125956 KiB
test_17.txt AC 300 ms 125964 KiB
test_18.txt AC 295 ms 126060 KiB
test_19.txt AC 291 ms 125852 KiB
test_20.txt AC 315 ms 125796 KiB
test_21.txt AC 300 ms 125840 KiB
test_22.txt AC 307 ms 125844 KiB
test_23.txt AC 315 ms 125920 KiB
test_24.txt AC 291 ms 125960 KiB
test_25.txt AC 307 ms 125844 KiB
test_26.txt AC 355 ms 125744 KiB
test_27.txt AC 349 ms 125740 KiB
test_28.txt AC 342 ms 125964 KiB
test_29.txt AC 339 ms 125736 KiB
test_30.txt AC 334 ms 126056 KiB
test_31.txt AC 330 ms 125748 KiB
test_32.txt AC 347 ms 125876 KiB
test_33.txt AC 354 ms 125892 KiB
test_34.txt AC 341 ms 125952 KiB
test_35.txt AC 367 ms 125872 KiB
test_36.txt AC 370 ms 125916 KiB
test_37.txt AC 428 ms 125912 KiB
test_38.txt AC 378 ms 125952 KiB
test_39.txt AC 429 ms 125960 KiB
test_40.txt AC 403 ms 125920 KiB