Submission #7586931
Source Code Expand
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vll;
#define pb push_back
#define mp make_pair
#define eps 1e-9
#define INF 2000000000
#define LLINF 1000000000000000ll
#define sz(x) ((int)(x).size())
#define fi first
#define sec second
#define all(x) (x).begin(),(x).end()
#define sq(x) ((x)*(x))
#define rep(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define repn(i,a,n) for(int (i)=(a);(i)<(int)(n);(i)++)
#define EQ(a,b) (abs((a)-(b))<eps)
#define dmp(x) cerr << __LINE__ << " " << #x << " " << x << endl;
template<class T> void chmin(T& a,const T& b){if(a>b)a=b;}
template<class T> void chmax(T& a,const T& b){if(a<b)a=b;}
template<class T,class U>
ostream& operator << (ostream& os,pair<T,U>& p){
os << p.fi << ',' << p.sec; return os;
}
template<class T,class U>
istream& operator >> (istream& is,pair<T,U>& p){
is >> p.fi >> p.sec; return is;
}
template<class T>
ostream& operator << (ostream &os,const vector<T> &vec){
for(int i=0;i<vec.size();i++){
os << vec[i];
if(i+1<vec.size())os << ' ';
}
return os;
}
template<class T>
istream& operator >> (istream &is,vector<T>& vec){
for(int i=0;i<vec.size();i++)is >> vec[i];
return is;
}
void fastio(){
cin.tie(0);
ios::sync_with_stdio(0);
cout<<fixed<<setprecision(12);
}
using Complex = complex<double>;
vector<Complex> dft(vector<Complex> f,int n,int sgn=1){
if(n==1)return f;
vector<Complex> f0,f1;
for(int i=0;i<n/2;i++){
f0.pb(f[i*2]);
f1.pb(f[i*2+1]);
}
f0 = dft(f0,n/2,sgn);
f1 = dft(f1,n/2,sgn);
Complex zeta = polar(1.0,2.0*M_PI/n*sgn);
Complex pow_zeta = 1;
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> idft(vector<Complex> f,int n){
f = dft(f,n,-1);
for(int i=0;i<f.size();i++){
f[i] /= n;
}
return f;
}
vector<Complex> mult(vector<Complex> A,vector<Complex> B){
int n = 1;
while(n<A.size()+B.size()+1)n<<=1;
A.resize(n,0);
B.resize(n,0);
A = dft(A,n);
B = dft(B,n);
vector<Complex> C;
for(int i=0;i<n;i++)C.pb(A[i]*B[i]);
return idft(C,n);
}
int main(){
int N;
cin >> N;
vector<Complex> A(N+1,0),B(N+1,0);
for(int i=1;i<=N;i++){
cin >> A[i] >> B[i];
}
vector<Complex> C = mult(A,B);
for(int i=1;i<=2*N;i++){
cout << (int)(C[i].real()+0.5) << endl;
}
return 0;
}
Submission Info
Submission Time |
|
Task |
C - 高速フーリエ変換 |
User |
okura |
Language |
C++14 (GCC 5.4.1) |
Score |
100 |
Code Size |
2470 Byte |
Status |
AC |
Exec Time |
1102 ms |
Memory |
36140 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 |
3 ms |
512 KB |
01_00_01 |
AC |
1 ms |
256 KB |
01_01_19 |
AC |
1 ms |
256 KB |
01_02_31 |
AC |
2 ms |
256 KB |
01_03_22 |
AC |
1 ms |
256 KB |
01_04_31 |
AC |
2 ms |
256 KB |
01_05_40 |
AC |
2 ms |
256 KB |
01_06_15 |
AC |
1 ms |
256 KB |
01_07_39 |
AC |
2 ms |
256 KB |
01_08_28 |
AC |
2 ms |
256 KB |
01_09_30 |
AC |
2 ms |
256 KB |
01_10_23 |
AC |
1 ms |
256 KB |
01_11_33 |
AC |
2 ms |
256 KB |
01_12_11 |
AC |
1 ms |
256 KB |
01_13_28 |
AC |
2 ms |
256 KB |
01_14_41 |
AC |
2 ms |
256 KB |
01_15_26 |
AC |
2 ms |
256 KB |
01_16_49 |
AC |
2 ms |
256 KB |
01_17_34 |
AC |
2 ms |
256 KB |
01_18_02 |
AC |
1 ms |
256 KB |
01_19_33 |
AC |
2 ms |
256 KB |
01_20_29 |
AC |
2 ms |
256 KB |
02_00_51254 |
AC |
557 ms |
18212 KB |
02_01_82431 |
AC |
1038 ms |
35616 KB |
02_02_17056 |
AC |
235 ms |
9008 KB |
02_03_34866 |
AC |
479 ms |
17696 KB |
02_04_6779 |
AC |
68 ms |
2552 KB |
02_05_65534 |
AC |
596 ms |
18628 KB |
02_06_65535 |
AC |
966 ms |
35120 KB |
02_07_65536 |
AC |
963 ms |
35120 KB |
02_08_65537 |
AC |
959 ms |
35120 KB |
02_09_65538 |
AC |
967 ms |
35120 KB |
02_10_100000 |
AC |
1102 ms |
36140 KB |