Submission #1991671
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define rep(i,n) FOR(i,0,n)
#define pb emplace_back
#define mp make_pair
typedef long long ll;
typedef pair<int,int> pint;
typedef complex<double> Comp;
const double PI=acos(-1.0);
const Comp I(0,1);
void fft(int n,vector<Comp> &a,bool inv=false){
double zeta=(inv?-1:1)*2*PI/n;
for(int m=n;m>=2;m>>=1){
int mh=m>>1;
rep(i,mh){
Comp w=exp((double)i*zeta*I);
for(int j=i;j<n;j+=m){
int k=j+mh;
Comp x=a[j]-a[k];
a[j]+=a[k];
a[k]=w*x;
}
}
zeta*=2;
}
int i=0;
FOR(j,1,n-1){
for(int k=n>>1;k>(i^=k);k>>=1);
if(j<i) swap(a[i],a[j]);
}
if(inv) rep(i,n) a[i]/=n;
}
void conv(vector<Comp> &v,vector<Comp> &w){
int n=1,deg=v.size()+w.size()-1;
while(n<deg) n<<=1;
v.resize(n),w.resize(n);
fft(n,v);fft(n,w);
rep(i,n) v[i]*=w[i];
fft(n,v,true);
}
int main(){
int n;
cin>>n;
vector<Comp> a(n+1,0),b(n+1,0);
FOR(i,1,n+1){
cin>>a[i]>>b[i];
}
conv(a,b);
FOR(i,1,2*n+1) cout<<(int)(a[i].real()+0.5)<<endl;
return 0;
}
Submission Info
Submission Time |
|
Task |
C - 高速フーリエ変換 |
User |
ts_ |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
1289 Byte |
Status |
AC |
Exec Time |
531 ms |
Memory |
10312 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 |
6 ms |
768 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 |
271 ms |
5304 KB |
02_01_82431 |
AC |
463 ms |
9960 KB |
02_02_17056 |
AC |
99 ms |
2548 KB |
02_03_34866 |
AC |
207 ms |
4920 KB |
02_04_6779 |
AC |
35 ms |
1024 KB |
02_05_65534 |
AC |
320 ms |
5504 KB |
02_06_65535 |
AC |
322 ms |
5496 KB |
02_07_65536 |
AC |
398 ms |
9592 KB |
02_08_65537 |
AC |
396 ms |
9592 KB |
02_09_65538 |
AC |
397 ms |
9592 KB |
02_10_100000 |
AC |
531 ms |
10312 KB |