Submission #1613505
Source Code Expand
#include <bits/stdc++.h> // iostream is too mainstream #include <cstdio> // bitch please #include <iostream> #include <algorithm> #include <cstdlib> #include <vector> #include <set> #include <map> #include <queue> #include <stack> #include <list> #include <cmath> #include <iomanip> #include <time.h> #define dibs reserve #define OVER9000 1234567890123456789LL #define ALL_THE(CAKE,LIE) for(auto LIE =CAKE.begin(); LIE != CAKE.end(); LIE++) #define tisic 47 #define soclose 1e-8 #define chocolate win // so much chocolate #define patkan 9 #define ff first #define ss second #define abs(x) ((x < 0)?-(x):x) #define uint unsigned int #define dbl long double #define pi 3.14159265358979323846 using namespace std; // mylittledoge typedef long long cat; #ifdef DONLINE_JUDGE // palindromic tree is better than splay tree! #define lld I64d #endif cat mod =998244353; cat pw(cat a, cat e) { if(e <= 0) return 1; cat x =pw(a,e/2); x =(x*x)%mod; if(e&1) x =(x*a)%mod; return x; } typedef unsigned long long ll; ll MOD =998244353LL; // prime, MOD-1 divisible by a large power of 2 ll pw(ll a, ll e) { if(e <= 0) return 1; ll x =pw(a,e/2); x =(x*x)%MOD; if(e%2 != 0) x =(x*a)%MOD; return x;} ll proot =3; // primitive MOD-1th root of unity %MOD vector< vector<ll> > OM; vector<ll> DFT(vector<ll> &A, int N, int d, int x, int dir) { vector<ll> ret(N,0); if(N == 1) { ret[0] =A[x]; return ret;} if(N == 2) { ret[0] =(A[x]+A[x+d])%MOD; ret[1] =(A[x]+MOD-A[x+d])%MOD; return ret;} int dep =0, n =N; while(n > 1) {n /=2; dep++;} vector<ll> DFT0[2]; DFT0[0] =DFT(A,N/2,d*2,x,dir); DFT0[1] =DFT(A,N/2,d*2,x+d,dir); for(int i =0; i < N/2; i++) { ll com =OM[dep][(N+(1LL*dir*i)%N)%N]; ret[i] =(DFT0[0][i]+com*DFT0[1][i])%MOD; ret[i+N/2] =(DFT0[0][i]+(MOD-com)*DFT0[1][i])%MOD;} return ret;} int SN =1<<17; // arbitrary power of 2 such that N <= SN vector<ll> convolution(vector<ll> A, vector<ll> B) { int Smin =1; while(Smin < (int)A.size()*2) Smin *=2; // init na omegy if(OM.empty()) { OM.resize(21); for(int i =0; i < 21; i++) { ll root =pw(proot,(MOD-1)/(1<<i)); // prim. root modulo N=2**i OM[i].resize(1<<i,1); for(int j =1; j < (1<<i); j++) OM[i][j] =(OM[i][j-1]*root)%MOD; reverse(begin(OM[i])+1,end(OM[i]));} // see NOTE } A.resize(Smin,0); B.resize(Smin,0); vector<ll> FA =DFT(A,A.size(),1,0,1); vector<ll> FB =DFT(B,B.size(),1,0,1); vector<ll> Fret(FA.size(),0); for(uint i =0; i < FA.size(); i++) Fret[i] =(FA[i]*FB[i])%MOD; vector<ll> ret =DFT(Fret,Fret.size(),1,0,-1); for(uint i =0; i < ret.size(); i++) ret[i] =(ret[i]*pw(ret.size(),MOD-2))%MOD; // normalise ret.resize(A.size()*2-1); return ret;} vector<ll> solve(vector<ll> FI, int e) { if(e <= 0) { vector<ll> F(FI.size(),0); F[0] =1; return F; } vector<ll> F =solve(FI,e/2); F =convolution(F,F); if(e%2) F =convolution(F,FI); return F; } int main() { cin.sync_with_stdio(0); cin.tie(0); cout << fixed << setprecision(10); string A,B; cin >> A >> B; int N =A.length(), x =0, y =0; for(int i =0; i < N; i++) { if(A[i] == '1' && B[i] == '1') y++; if(A[i] == '1' && B[i] == '0') x++; } vector<cat> fac(N+1,1); for(int i =1; i <= N; i++) fac[i] =(fac[i-1]*i)%mod; vector<ll> FI(y+x+1,0); for(int i =1; i <= y+x; i++) FI[i] =pw(fac[i],mod-2); vector<ll> F =solve(FI,x); cat ans =0; for(int i =0; i <= y+x; i++) ans =(ans+F[i])%mod; ans =(ans*fac[x])%mod; ans =(ans*fac[y])%mod; ans =(ans*fac[x+y])%mod; if(ans < 0) ans +=mod; cout << ans << "\n"; return 0;} // look at my code // my code is amazing
Submission Info
Submission Time | |
---|---|
Task | E - Shuffle and Swap |
User | xellos |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 3733 Byte |
Status | TLE |
Exec Time | 2106 ms |
Memory | 103684 KB |
Judge Result
Set Name | Sample | Partial | All | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 1200 | 0 / 500 | ||||||||||
Status |
|
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt |
Partial | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_2_01.txt, subtask_2_02.txt, subtask_2_03.txt, subtask_2_04.txt, subtask_2_05.txt, subtask_2_06.txt, subtask_2_07.txt, subtask_2_08.txt, subtask_2_09.txt, subtask_2_10.txt, subtask_2_11.txt, subtask_2_12.txt, subtask_2_13.txt, subtask_2_14.txt, subtask_2_15.txt, subtask_2_16.txt, subtask_2_17.txt, subtask_2_18.txt, subtask_2_19.txt, subtask_2_20.txt, subtask_2_21.txt, subtask_2_22.txt, subtask_2_23.txt, subtask_2_24.txt, subtask_2_25.txt, subtask_2_26.txt, subtask_2_27.txt, subtask_2_28.txt, subtask_2_29.txt, subtask_2_30.txt, subtask_2_31.txt, subtask_2_32.txt, subtask_2_33.txt, subtask_2_34.txt, subtask_2_35.txt, subtask_2_36.txt, subtask_2_37.txt, subtask_2_38.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 36 ms | 16640 KB |
sample_02.txt | AC | 1 ms | 256 KB |
sample_03.txt | AC | 37 ms | 16768 KB |
sample_04.txt | AC | 40 ms | 16768 KB |
subtask_1_01.txt | AC | 36 ms | 16640 KB |
subtask_1_02.txt | AC | 1 ms | 256 KB |
subtask_1_03.txt | AC | 36 ms | 16640 KB |
subtask_1_04.txt | AC | 1 ms | 256 KB |
subtask_1_05.txt | AC | 36 ms | 16640 KB |
subtask_1_06.txt | AC | 36 ms | 16640 KB |
subtask_1_07.txt | AC | 36 ms | 16640 KB |
subtask_1_08.txt | AC | 37 ms | 16640 KB |
subtask_1_09.txt | AC | 187 ms | 21128 KB |
subtask_1_10.txt | AC | 53 ms | 17280 KB |
subtask_1_11.txt | TLE | 2105 ms | 102600 KB |
subtask_1_12.txt | TLE | 2106 ms | 86396 KB |
subtask_1_13.txt | TLE | 2105 ms | 102660 KB |
subtask_1_14.txt | AC | 2 ms | 256 KB |
subtask_1_15.txt | AC | 45 ms | 17024 KB |
subtask_1_16.txt | AC | 71 ms | 18000 KB |
subtask_1_17.txt | TLE | 2106 ms | 86360 KB |
subtask_1_18.txt | TLE | 2106 ms | 86336 KB |
subtask_1_19.txt | TLE | 2106 ms | 86384 KB |
subtask_1_20.txt | TLE | 2106 ms | 86408 KB |
subtask_1_21.txt | TLE | 2106 ms | 86128 KB |
subtask_1_22.txt | TLE | 2105 ms | 86344 KB |
subtask_1_23.txt | TLE | 2106 ms | 86108 KB |
subtask_1_24.txt | TLE | 2106 ms | 102484 KB |
subtask_1_25.txt | TLE | 2106 ms | 102740 KB |
subtask_1_26.txt | TLE | 2106 ms | 102612 KB |
subtask_1_27.txt | TLE | 2106 ms | 86344 KB |
subtask_1_28.txt | TLE | 2106 ms | 86412 KB |
subtask_1_29.txt | TLE | 2106 ms | 86412 KB |
subtask_1_30.txt | TLE | 2106 ms | 86404 KB |
subtask_1_31.txt | TLE | 2106 ms | 86316 KB |
subtask_1_32.txt | TLE | 2106 ms | 86344 KB |
subtask_1_33.txt | TLE | 2106 ms | 86392 KB |
subtask_1_34.txt | TLE | 2106 ms | 86348 KB |
subtask_1_35.txt | TLE | 2106 ms | 86344 KB |
subtask_1_36.txt | TLE | 2106 ms | 86344 KB |
subtask_1_37.txt | TLE | 2106 ms | 86344 KB |
subtask_1_38.txt | TLE | 2106 ms | 86344 KB |
subtask_1_39.txt | TLE | 2106 ms | 86284 KB |
subtask_1_40.txt | TLE | 2105 ms | 86412 KB |
subtask_1_41.txt | TLE | 2105 ms | 86412 KB |
subtask_1_42.txt | TLE | 2105 ms | 86412 KB |
subtask_2_01.txt | AC | 37 ms | 16768 KB |
subtask_2_02.txt | AC | 1 ms | 384 KB |
subtask_2_03.txt | TLE | 2106 ms | 102600 KB |
subtask_2_04.txt | TLE | 2106 ms | 86976 KB |
subtask_2_05.txt | TLE | 2105 ms | 86996 KB |
subtask_2_06.txt | AC | 11 ms | 640 KB |
subtask_2_07.txt | AC | 341 ms | 26500 KB |
subtask_2_08.txt | AC | 1401 ms | 54276 KB |
subtask_2_09.txt | TLE | 2106 ms | 103132 KB |
subtask_2_10.txt | TLE | 2106 ms | 103580 KB |
subtask_2_11.txt | TLE | 2106 ms | 103684 KB |
subtask_2_12.txt | TLE | 2106 ms | 103580 KB |
subtask_2_13.txt | TLE | 2105 ms | 87088 KB |
subtask_2_14.txt | TLE | 2106 ms | 87088 KB |
subtask_2_15.txt | TLE | 2106 ms | 87120 KB |
subtask_2_16.txt | TLE | 2106 ms | 87024 KB |
subtask_2_17.txt | TLE | 2106 ms | 87108 KB |
subtask_2_18.txt | TLE | 2106 ms | 87024 KB |
subtask_2_19.txt | TLE | 2106 ms | 86892 KB |
subtask_2_20.txt | TLE | 2106 ms | 86892 KB |
subtask_2_21.txt | TLE | 2106 ms | 86892 KB |
subtask_2_22.txt | TLE | 2106 ms | 103448 KB |
subtask_2_23.txt | TLE | 2106 ms | 103448 KB |
subtask_2_24.txt | TLE | 2106 ms | 103548 KB |
subtask_2_25.txt | TLE | 2106 ms | 103548 KB |
subtask_2_26.txt | TLE | 2106 ms | 103604 KB |
subtask_2_27.txt | TLE | 2106 ms | 103512 KB |
subtask_2_28.txt | TLE | 2106 ms | 86904 KB |
subtask_2_29.txt | TLE | 2106 ms | 86924 KB |
subtask_2_30.txt | TLE | 2106 ms | 86912 KB |
subtask_2_31.txt | TLE | 2106 ms | 87092 KB |
subtask_2_32.txt | TLE | 2106 ms | 87092 KB |
subtask_2_33.txt | TLE | 2106 ms | 87092 KB |
subtask_2_34.txt | TLE | 2106 ms | 87092 KB |
subtask_2_35.txt | TLE | 2106 ms | 103568 KB |
subtask_2_36.txt | TLE | 2106 ms | 103568 KB |
subtask_2_37.txt | TLE | 2105 ms | 103568 KB |
subtask_2_38.txt | TLE | 2106 ms | 103568 KB |