Submission #421363


Source Code Expand

#include <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <functional>
 
#define mp       make_pair
#define pb       push_back
#define all(x)   (x).begin(),(x).end()
#define rep(i,n) for(int i=0;i<(n);i++)
 
using namespace std;
 
typedef    long long          ll;
typedef    unsigned long long ull;
typedef    vector<bool>       vb;
typedef    vector<int>        vi;
typedef    vector<vb>         vvb;
typedef    vector<vi>         vvi;
typedef    pair<int,int>      pii;
 
const int INF=1<<29;
const double EPS=1e-9;
 
const int dx[]={1,0,-1,0},dy[]={0,-1,0,1};

vector<complex<double> > dft(vector<complex<double> > f, int n, int dir) {
	if (n == 1) return f;
	vector<complex<double> > f0;
	vector<complex<double> > f1;
	for (int i = 0; i < n / 2; ++i) {
		f0.push_back(f[2 * i + 0]);
		f1.push_back(f[2 * i + 1]);
	}
	f0 = dft(f0, n / 2, dir);
	f1 = dft(f1, n / 2, dir);

	complex<double> zeta(cos(dir * 2 * 3.1415921535 / n), sin(dir * 2 * 3.1415921535 / n));
	complex<double> pow_zeta(1, 0);
	for (int i = 0; i < n; ++i) {
		f[i] = f0[i % (n / 2)] + pow_zeta * f1[i % (n / 2)];
		pow_zeta *= zeta;
	}
	return f;
}


vector<complex<double> > multiply(vector<complex<double> > g, vector<complex<double> > h) {
	int size = g.size() + h.size() + 1;
	int n;
	for (n = 1; n < size; n <<= 1) {
	}
	while(g.size() < n) g.push_back(complex<double>(0, 0));
	while(h.size() < n) h.push_back(complex<double>(0, 0));
	vector<complex<double> > gg = dft(g, n, 1);
	vector<complex<double> > hh = dft(h, n, 1);
	std::vector<complex<double> > ff;
	for (int i = 0; i < n; ++i) {
		ff.push_back(gg[i] * hh[i]);
	}
	ff = dft(ff, n, -1);
	for (int i = 0; i < ff.size(); ++i) {
		ff[i] /= n;
	}
	return ff;
}

int main(int argc, char const *argv[]) {
	int N;
	cin >> N;
	std::vector<complex<double> > A;
	std::vector<complex<double> > B;
	A.push_back(complex<double>(0, 0));
	B.push_back(complex<double>(0, 0));
	for (int i = 0; i < N; ++i) {
		int a, b;
		cin >> a >> b;
		A.push_back(complex<double>(a, 0));
		B.push_back(complex<double>(b, 0));
	}
	/*
	std::vector<complex<double> > reta = dft(A, N);
	for (int i = 0; i < N; ++i) {
		cout << real(reta[i]) << " " << imag(reta[i]) << endl;
	}
	*/

	std::vector<complex<double> > ret = multiply(A, B);
	
	for (int i = 1; i <= 2 * N; ++i) {
		cout << (int)(real(ret[i]) + 0.1) << endl;
	}

	return 0;
}

Submission Info

Submission Time
Task C - 高速フーリエ変換
User kakira
Language C++ (GCC 4.9.2)
Score 0
Code Size 2679 Byte
Status WA
Exec Time 1685 ms
Memory 40840 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 100
Status
AC × 1
AC × 22
WA × 11
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 40 ms 836 KB
01_00_01 AC 29 ms 868 KB
01_01_19 AC 26 ms 928 KB
01_02_31 AC 27 ms 924 KB
01_03_22 AC 26 ms 860 KB
01_04_31 AC 28 ms 872 KB
01_05_40 AC 27 ms 924 KB
01_06_15 AC 26 ms 920 KB
01_07_39 AC 27 ms 928 KB
01_08_28 AC 27 ms 924 KB
01_09_30 AC 25 ms 920 KB
01_10_23 AC 27 ms 876 KB
01_11_33 AC 28 ms 916 KB
01_12_11 AC 25 ms 924 KB
01_13_28 AC 25 ms 924 KB
01_14_41 AC 25 ms 924 KB
01_15_26 AC 25 ms 920 KB
01_16_49 AC 27 ms 916 KB
01_17_34 AC 27 ms 916 KB
01_18_02 AC 27 ms 920 KB
01_19_33 AC 28 ms 876 KB
01_20_29 AC 27 ms 868 KB
02_00_51254 WA 835 ms 20808 KB
02_01_82431 WA 1609 ms 40244 KB
02_02_17056 WA 390 ms 10628 KB
02_03_34866 WA 761 ms 20372 KB
02_04_6779 WA 128 ms 3364 KB
02_05_65534 WA 910 ms 21332 KB
02_06_65535 WA 1528 ms 39704 KB
02_07_65536 WA 1531 ms 39700 KB
02_08_65537 WA 1512 ms 39712 KB
02_09_65538 WA 1579 ms 39704 KB
02_10_100000 WA 1685 ms 40840 KB