Submission #1025070

#TimeUsernameProblemLanguageResultExecution timeMemory
1025070irmuunDigital Circuit (IOI22_circuit)C++17
Compilation error
0 ms0 KiB
//Unfinished #include<bits/stdc++.h> //#include "circuit.h" using namespace std; #define ll long long #define pb push_back #define ff first #define ss second #define all(s) s.begin(),s.end() #define rall(s) s.rbegin(),s.rend() const int mod=1e9+2022; const int maxn=2e5; vector<int>adj[maxn],dp(maxn,0); vector<int>a; int n,m; array<int,3>merge(array<int,3>l,array<int,3>r){ array<int,3>c; c[0]=(l[0]+r[0])%mod; c[1]=(l[1]+r[1])%mod; c[2]=0; return c; } struct segtree{ int n; vector<array<int,3>>d; void init(int n){ d.resize(4*n); build(1,0,n-1); } void build(int v,int l,int r){ if(l==r){ d[v][0]=dp[l]; d[v][1]=0; d[v][2]=0; if(a[l]==1){ swap(d[v][0],d[v][1]); } return; } int mid=(l+r)>>1; build(v*2,l,mid); build(v*2+1,mid+1,r); d[v]=merge(d[v*2],d[v*2+1]); } void update(int v,int l,int r,int L,int R){ if(L>R) return; if(l==L&&r==R){ swap(d[v][0],d[v][1]); d[v][2]^=1; return; } d[v][2]^=1; int cnt=d[v][2]; int mid=(l+r)>>1; update(v*2,l,mid,L,min(R,mid)); update(v*2+1,mid+1,r,max(L,mid+1),R); d[v]=merge(d[v*2],d[v*2+1]); d[v][2]=cnt; if(d[v][2]){ swap(d[v][0],d[v][1]); } } int ans(){ return d[1][1]; } }; segtree sg; void init(int N,int M,vector<int>p,vector<int>A){ n=N; m=M; a=A; for(int i=1;i<n+m;i++){ adj[p[i]].pb(i); } fill(all(dp),1); queue<int>q; q.push(0); while(!q.empty()){ int x=q.front(); q.pop(); for(int y:adj[x]){ dp[y]=1ll*dp[y]*dp[x]%mod*(int)adj[x].size()%mod; q.push(y); } } sg.init(m); for(int i=0;i<m;i++){ cout<<dp[i+n]<<' '; } cout<<'\n'; } int count_ways(int l,int r){ sg.update(1,0,m-1,l-n,r-n); return sg.ans(); } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int N,M,Q; cin>>N>>M>>Q; vector<int>P(N+M),A(M); for(int i=0;i<N+M;i++){ cin>>P[i]; } for(int i=0;i<M;i++){ cin>>A[i]; } init(N,M,P,A); while(Q--){ int L,R; cin>>L>>R; cout<<count_ways(L,R)<<"\n"; } }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccZF6xY8.o: in function `main':
stub.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccut2Qc9.o:circuit.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status