Submission #6645346


Source Code Expand

#include<cstdio>
#include<vector>
#include<algorithm>
#include<complex>
using namespace std;
typedef complex<double> C;
typedef long long ll;

typedef vector<C> VC;

VC dft(VC a, ll n, ll sgn = 1) {
  if (n == 1) return a;
  n /= 2;
  VC f(n), g(n);
  for (ll i = 0; i < n; i++) f[i] = a[2*i], g[i] = a[2*i+1];

  f = dft(f, n, sgn);
  g = dft(g, n, sgn);

  C zeta(cos(M_PI/n), sin(M_PI/n) * sgn), pow_zeta = 1;

  for (ll i = 0; i < 2*n; i++) {
    a[i] = f[i%n] + pow_zeta * g[i%n];
    pow_zeta *= zeta;
  }
  return a;
}

VC inv_dft(VC a, ll n) {
  a = dft(a, n, -1);
  for (ll i = 0; i < n; i++) a[i] /= n;
  return a;
}

VC multiply(VC a, VC b) {
  ll sz = a.size() + b.size() + 1, n = 1;
  while (n < sz) n *= 2;
  a.resize(n), b.resize(n);
  a = dft(a, n);
  b = dft(b, n);

  VC f(n);
  for (ll i = 0; i < n; i++) f[i] = a[i] * b[i];
  return inv_dft(f, n);
}


int main() {
  ll n, t1, t2;
  scanf("%lld", &n);
  VC a(n+1), b(n+1);
  for (ll i = 1; i <= n; i++) scanf("%lld%lld", &t1, &t2), a[i] = C(t1), b[i] = (t2);
  VC ans = multiply(a, b);
  for (ll i = 1; i <= 2*n; i++) printf("%lld\n", (ll)(ans[i].real() + 0.5));
}

Submission Info

Submission Time
Task C - 高速フーリエ変換
User pngn
Language C++11 (GCC 4.8.1)
Score 100
Code Size 1135 Byte
Status AC
Exec Time 719 ms
Memory 36148 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:50:20: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lld", &n);
                    ^
./Main.cpp:52:85: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   for (ll i = 1; i <= n; i++) scanf("%lld%lld", &t1, &t2), a[i] = C(t1), b[i] = (t2);
                                                                                     ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 1
AC × 33
Set Name Test Cases
Sample 00_sample_01
All 00_sample_01, 01_00_01, 01_01_19, 01_02_31, 01_03_22, 01_04_31, 01_05_40, 01_06_15, 01_07_39, 01_08_28, 01_09_30, 01_10_23, 01_11_33, 01_12_11, 01_13_28, 01_14_41, 01_15_26, 01_16_49, 01_17_34, 01_18_02, 01_19_33, 01_20_29, 02_00_51254, 02_01_82431, 02_02_17056, 02_03_34866, 02_04_6779, 02_05_65534, 02_06_65535, 02_07_65536, 02_08_65537, 02_09_65538, 02_10_100000
Case Name Status Exec Time Memory
00_sample_01 AC 2 ms 384 KB
01_00_01 AC 1 ms 256 KB
01_01_19 AC 1 ms 256 KB
01_02_31 AC 1 ms 256 KB
01_03_22 AC 1 ms 256 KB
01_04_31 AC 1 ms 256 KB
01_05_40 AC 1 ms 256 KB
01_06_15 AC 1 ms 256 KB
01_07_39 AC 1 ms 256 KB
01_08_28 AC 1 ms 256 KB
01_09_30 AC 1 ms 256 KB
01_10_23 AC 1 ms 256 KB
01_11_33 AC 1 ms 256 KB
01_12_11 AC 1 ms 256 KB
01_13_28 AC 1 ms 256 KB
01_14_41 AC 1 ms 256 KB
01_15_26 AC 1 ms 256 KB
01_16_49 AC 1 ms 256 KB
01_17_34 AC 1 ms 256 KB
01_18_02 AC 1 ms 256 KB
01_19_33 AC 1 ms 256 KB
01_20_29 AC 1 ms 256 KB
02_00_51254 AC 350 ms 18212 KB
02_01_82431 AC 711 ms 35540 KB
02_02_17056 AC 169 ms 8916 KB
02_03_34866 AC 349 ms 17700 KB
02_04_6779 AC 42 ms 2448 KB
02_05_65534 AC 355 ms 18680 KB
02_06_65535 AC 716 ms 35044 KB
02_07_65536 AC 709 ms 35044 KB
02_08_65537 AC 715 ms 35044 KB
02_09_65538 AC 708 ms 35044 KB
02_10_100000 AC 719 ms 36148 KB