提出 #62554591
ソースコード 拡げる
/*
_ _ _ __ __ _____
/\ | | /\ | | | | | \/ |/ ____|
/ \ | |__ ___ / \ | |__ __| | ___ | \ / | |
/ /\ \ | '_ \ / _ \ / /\ \ | '_ \ / _` |/ _ \| |\/| | |
/ ____ \| |_) | (_) / ____ \| |_) | (_| | (_) | | | | |____
/_/ \_\_.__/ \___/_/ \_\_.__/ \__,_|\___/|_| |_|\_____|
*/
// 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;
}
提出情報
| 提出日時 |
|
| 問題 |
G - Fine Triplets |
| ユーザ |
b4n4n4s |
| 言語 |
C++ 23 (gcc 12.2) |
| 得点 |
600 |
| コード長 |
4365 Byte |
| 結果 |
AC |
| 実行時間 |
429 ms |
| メモリ |
126060 KiB |
コンパイルエラー
Main.cpp: In function ‘void solve(int)’:
Main.cpp:106:16: warning: unused parameter ‘tc’ [-Wunused-parameter]
106 | void solve(int tc) {
| ~~~~^~
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
600 / 600 |
| 結果 |
|
|
| セット名 |
テストケース |
| 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 |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 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 |