QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#537669 | #4564. Digital Circuit | Yahia_Emara# | 4 | 188ms | 18644kb | C++20 | 2.6kb | 2024-08-30 17:20:26 | 2024-08-30 17:20:27 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define sz(x) int(x.size())
#define dbg(x) cout << (#x) << " : " << x << endl
#define pb push_back
#define all(x) x.begin(),x.end()
#define LOOP(n) for(int rp=0;rp<n;rp++)
#define sq(x) ((x)*(x))
typedef long long ll;
typedef long double dl;
const int SZ=5e5+7;
const ll INF=1e18+7;
const dl eps=1e-9;
int MOD=1e9+2022;
mt19937_64 rng(time(0));
int rnd(int l,int r){
return uniform_int_distribution<int>(l,r)(rng);
}
ll trig(ll x){
return x*(x+1)/2;
}
int getN(){
int n;cin >> n;
return n;
}
#define cmbntrcs fact[0]=1;for(int i=1;i<SZ;i++)fact[i]=mul(fact[i-1],i);finv[SZ-1]=inv(fact[SZ-1]);for(int i=SZ-2;i>0;i--)finv[i]=mul(finv[i+1],i+1);
int fact[SZ],finv[SZ];
int add(int x,int y,int MOD=MOD){
x+=y;if(x>=MOD)x-=MOD;
return x;
}
int sub(int x,int y,int MOD=MOD){
x-=y;if(x<0)x+=MOD;
return x;
}
int mul(int x,int y,int MOD=MOD){
return(x*1ll*y)%MOD;
}
int pwr(int x,ll b,int MOD=MOD){
int rt=1;
while(b>0){
if(b&1)rt=mul(rt,x,MOD);
x=mul(x,x,MOD),b>>=1;
}
return rt;
}
int inv(int x,int MOD=MOD){
return pwr(x,MOD-2,MOD);
}
#include "circuit.h"
//#include "stub.cpp"
int n,m,p[SZ],a[SZ],c[SZ],I[SZ];
vector<int>g[SZ],v;
int dp[1007][1007],N;
int solve(int i,int P){
if(i==N)return(P?0:1);
if(dp[i][P]!=-1)return dp[i][P];
return dp[i][P]=add(mul(solve(i+1,P),sub(c[v[i]],a[v[i]])),mul(solve(i+1,(P?P-1:0)),a[v[i]]));
}
void calc(int i){
v=g[i],N=sz(v);
for(int i=0;i<=N;i++)for(int j=0;j<=N;j++)dp[i][j]=-1;
a[i]=0;
for(int P=1;P<=N;P++)a[i]=add(a[i],solve(0,P));
}
void init(int N,int M,vector<int>P,vector<int>A){
n=N,m=M;
for(int i=0;i<n+m;i++)p[i]=P[i],I[i]=0;
for(int i=1;i<n+m;i++)g[p[i]].pb(i);
for(int i=0;i<m;i++)a[i+n]=A[i],c[i+n]=1;
for(int i=n-1;i>=0;i--){
c[i]=sz(g[i]);
for(auto&j:g[i])c[i]=mul(c[i],c[j]);
calc(i);
}
}
int prp(int i){
for(int ch=i*2+1;ch<=i*2+2;ch++){
if(I[i])a[ch]=sub(c[ch],a[ch]);
I[ch]^=I[i];
}
I[i]=0;
}
void upd(int l,int r,int i=0,int lx=n,int rx=n+m-1){
if(r<lx||rx<l)return;
if(lx>=l&&rx<=r){
I[i]^=1,a[i]=sub(c[i],a[i]);
return;
}
//prp(i);
int md=(lx+rx)>>1;
upd(l,r,i*2+1,lx,md),upd(l,r,i*2+2,md+1,rx);
calc(i);
}
int count_ways(int l,int r){
upd(l,r);
return a[0];
}
/*int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
//cout << fixed << setprecision(12);
int tt=1;
//cin >> tt;
LOOP(tt){
//code
}
return 0;
}
*/
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Wrong Answer
Test #1:
score: 2
Accepted
time: 2ms
memory: 14120kb
input:
1 2 -1 0 0 0 0 1 1 2 2 1 2 2 2 1 2 -1 -1 -2 -2
output:
1 2 0 1 1
result:
ok 7 lines
Test #2:
score: 2
Accepted
time: 1ms
memory: 14096kb
input:
1 1 -1 0 0 1 1 1 1 1 1 1 1 -1 -1 -2 -2
output:
1 0 1 0
result:
ok 6 lines
Test #3:
score: 0
Wrong Answer
time: 82ms
memory: 18292kb
input:
1 972 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
output:
495 492 489 489 482
result:
wrong answer 3rd lines differ - expected: '509', found: '495'
Subtask #2:
score: 0
Wrong Answer
Test #9:
score: 7
Accepted
time: 0ms
memory: 12340kb
input:
1 2 -1 0 0 0 0 1 1 2 2 1 2 2 2 1 2 -1 -1 -2 -2
output:
1 2 0 1 1
result:
ok 7 lines
Test #10:
score: 7
Accepted
time: 3ms
memory: 14140kb
input:
255 256 -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 ...
output:
52130940 785285606 585825652
result:
ok 5 lines
Test #11:
score: 0
Wrong Answer
time: 0ms
memory: 14388kb
input:
511 512 -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50 51 ...
output:
655368480 486298234 626529572 640949026 56412892
result:
wrong answer 4th lines differ - expected: '979089518', found: '486298234'
Subtask #3:
score: 0
Skipped
Dependency #1:
0%
Subtask #4:
score: 4
Accepted
Test #43:
score: 4
Accepted
time: 113ms
memory: 16084kb
input:
32767 32768 -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...
output:
431985922 394586018 431985922 469385826 506785730 469385826 431985922 469385826 431985922 469385826 506785730 469385826 431985922 394586018 357186114 319786210 357186114 394586018 431985922 394586018 357186114 394586018 431985922 469385826 506785730 469385826 431985922 394586018 357186114 319786210 ...
result:
ok 71356 lines
Test #44:
score: 4
Accepted
time: 188ms
memory: 16668kb
input:
65535 65536 -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...
output:
913758140 928668562 913758140 898847718 883937296 869026874 883937296 898847718 913758140 928668562 913758140 898847718 883937296 898847718 913758140 928668562 913758140 898847718 913758140 928668562 943578984 928668562 913758140 928668562 913758140 898847718 883937296 869026874 883937296 898847718 ...
result:
ok 100002 lines
Test #45:
score: 4
Accepted
time: 181ms
memory: 16608kb
input:
65535 65536 -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...
output:
152530276 137619854 122709432 107799010 92888588 77978166 63067744 48157322 33246900 18336478 3426056 988517656 973607234 958696812 943786390 928875968 913965546 899055124 884144702 869234280 854323858 839413436 824503014 809592592 794682170 779771748 764861326 749950904 735040482 720130060 70521963...
result:
ok 100002 lines
Test #46:
score: 4
Accepted
time: 173ms
memory: 18644kb
input:
65535 65536 -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...
output:
14910422 29820844 44731266 59641688 74552110 89462532 104372954 119283376 134193798 149104220 164014642 178925064 193835486 208745908 223656330 238566752 253477174 268387596 283298018 298208440 313118862 328029284 342939706 357850128 372760550 387670972 402581394 417491816 432402238 447312660 462223...
result:
ok 100002 lines
Subtask #5:
score: 0
Wrong Answer
Dependency #4:
100%
Accepted
Test #47:
score: 0
Wrong Answer
time: 177ms
memory: 16012kb
input:
32767 32768 -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23 24 24 25 25 26 26 27 27 28 28 29 29 30 30 31 31 32 32 33 33 34 34 35 35 36 36 37 37 38 38 39 39 40 40 41 41 42 42 43 43 44 44 45 45 46 46 47 47 48 48 49 49 50 50...
output:
105182172 904826008 717826488 934212166 815780348 656385346 321567850 439999668 805984962 95386786 872771024 386572272 134568330 981407456 142582076 625217548 534390248 701798996 496990344 636794574 384790632 329581596 97168426 217381884 292181692 823794094 589599284 85591400 56205242 477399572 6465...
result:
wrong answer 5th lines differ - expected: '249436868', found: '717826488'
Subtask #6:
score: 0
Skipped
Dependency #2:
0%
Subtask #7:
score: 0
Skipped
Dependency #3:
0%
Subtask #8:
score: 0
Skipped
Dependency #1:
0%