提交时间:2022-04-11 12:14:07

运行 ID: 48254

#include <bits/stdc++.h> using namespace std; inline long long read() { int x=0,f=1; char t=getchar(); while(t<'0'||t>'9'){if(t=='-')f=0;t=getchar();} while(t>='0'&&t<='9')x=(x<<1)+(x<<3)+(t^48),t=getchar(); return f?x:-x; } const int N=2e5+100,mod=1e9+7; long long n,m,t,u,v,cntt[N],ans=1,ct[N],tr[N<<2]; bool bj[N]; vector<int> a[N]; int build(int l,int r,int now) { if(l==r) return tr[now]=ct[l]%mod; build(l,(l+r)>>1,now<<1); build(((l+r)>>1)+1,r,now<<1|1); tr[now]=tr[now<<1]*tr[now<<1|1]%mod; return tr[now]; } int calc(int l,int r,int now) { if(l==r) return ++tr[now]; if(v<=((l+r)>>1)) return tr[now]=calc(l,(l+r)>>1,now<<1)*tr[now<<1|1]; else return tr[now]=tr[now<<1]*calc(((l+r)>>1)+1,r,now<<1|1); } int main() { // freopen("game.in","r",stdin); // freopen("game.out","w",stdout); n=read(),m=read(),t=read(); for(int i=1;i<=m;i++) u=read(),v=read(),a[u].push_back(v),ct[v]++; cout<<build(2,n,1)<<endl; while(t--) { cin>>u>>v; cout<<calc(2,n,1)<<endl; } return 0; }