Submission #422031
Source Code Expand
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <vector>
#include <algorithm>
#include <set>
#include <queue>
#include <map>
#include <climits>
#include <complex>
using namespace std;
#define REP(i,n) for(int i=0; i<(int)(n); i++)
#define RREP(i,n) for(int i=(int)n-1; i>=0; i--)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define RFOR(i,c) for(__typeof((c).rbegin())i=(c).rbegin();i!=(c).rend();++i)
#define ALL(c) (c).begin(), (c).end()
typedef long long int ll;
typedef pair<int, int> pii;
typedef pair<int, pair<int, int> > pipii;
typedef vector<int> vi;
const int INF = 1e9;
const int MOD = 1e9+7;
typedef complex<double> Comp;
typedef vector<Comp> vc;
vc fft(vc f, bool inv = false){
int n = f.size();
if(n == 1) return f;
vc f0, f1;
REP(i, n / 2) f0.push_back(f[2 * i + 0]);
REP(i, n / 2) f1.push_back(f[2 * i + 1]);
f0 = fft(f0, inv); f1 = fft(f1, inv);
double deg = (inv ? -1 : 1) * 2 * M_PI / n;
Comp zeta = Comp(cos(deg), sin(deg));
Comp pow_zeta = Comp(1.0, 0.0);
REP(i, n){
f[i] = f0[i % (n / 2)] + pow_zeta * f1[i % (n / 2)];
pow_zeta *= zeta;
}
return f;
}
vc multiply(vc g, vc h){
int n = 1;
while(n < g.size() + h.size() + 1) n<<=1;
while(g.size() < n) g.push_back(Comp(0.0, 0.0));
while(h.size() < n) h.push_back(Comp(0.0, 0.0));
vc gg = fft(g);
vc hh = fft(h);
REP(i, n) gg[i] *= hh[i];
gg = fft(gg, true);
REP(i, n) gg[i] /= n;
return gg;
}
int main(void){
int N;
cin >> N;
vc A(N+1), B(N+1);
REP(i, N){
double x, y;
cin >> x >> y;
A[i+1] = Comp(x, 0);
B[i+1] = Comp(y, 0);
}
vc cc = multiply(A, B);
REP(i, 2 * N + 1){
if(!i) continue;
cout << (ll)(real(cc[i]) + 0.01) << endl;
}
return 0;
}
Submission Info
Submission Time |
|
Task |
C - 高速フーリエ変換 |
User |
no15_renne |
Language |
C++ (GCC 4.9.2) |
Score |
100 |
Code Size |
1971 Byte |
Status |
AC |
Exec Time |
1764 ms |
Memory |
36656 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
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 |
29 ms |
920 KB |
01_00_01 |
AC |
27 ms |
924 KB |
01_01_19 |
AC |
26 ms |
796 KB |
01_02_31 |
AC |
27 ms |
800 KB |
01_03_22 |
AC |
27 ms |
920 KB |
01_04_31 |
AC |
27 ms |
924 KB |
01_05_40 |
AC |
29 ms |
748 KB |
01_06_15 |
AC |
27 ms |
800 KB |
01_07_39 |
AC |
27 ms |
928 KB |
01_08_28 |
AC |
28 ms |
924 KB |
01_09_30 |
AC |
30 ms |
732 KB |
01_10_23 |
AC |
26 ms |
796 KB |
01_11_33 |
AC |
27 ms |
800 KB |
01_12_11 |
AC |
27 ms |
804 KB |
01_13_28 |
AC |
26 ms |
796 KB |
01_14_41 |
AC |
27 ms |
920 KB |
01_15_26 |
AC |
27 ms |
808 KB |
01_16_49 |
AC |
27 ms |
924 KB |
01_17_34 |
AC |
27 ms |
792 KB |
01_18_02 |
AC |
26 ms |
920 KB |
01_19_33 |
AC |
26 ms |
920 KB |
01_20_29 |
AC |
26 ms |
800 KB |
02_00_51254 |
AC |
895 ms |
18708 KB |
02_01_82431 |
AC |
1686 ms |
36076 KB |
02_02_17056 |
AC |
426 ms |
9448 KB |
02_03_34866 |
AC |
803 ms |
18172 KB |
02_04_6779 |
AC |
137 ms |
3072 KB |
02_05_65534 |
AC |
978 ms |
19232 KB |
02_06_65535 |
AC |
1527 ms |
35596 KB |
02_07_65536 |
AC |
1575 ms |
35604 KB |
02_08_65537 |
AC |
1562 ms |
35596 KB |
02_09_65538 |
AC |
1576 ms |
35596 KB |
02_10_100000 |
AC |
1764 ms |
36656 KB |