Advertisement
ec1117

Untitled

Jan 29th, 2021
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.51 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define ull unsigned ll
  4. #define uint unsigned
  5. #define pii pair<int,int>
  6. #define pll pair<ll,ll>
  7. #define IT iterator
  8. #define PB push_back
  9. #define fi first
  10. #define se second
  11. #define For(i,j,k) for (int i=(int)(j);i<=(int)(k);i++)
  12. #define Rep(i,j,k) for (int i=(int)(j);i>=(int)(k);i--)
  13. #define CLR(a,v) memset(a,v,sizeof(a));
  14. #define CPY(a,b) memcpy(a,b,sizeof(a));
  15. #define debug puts("wzpakking")
  16. #define y1 ysghysgsygsh
  17. #define all(v) v.begin(),v.end()
  18. using namespace std;
  19. const int N=500005;
  20. const int mo=998244353;
  21. int t[N*4][2][2];
  22. int n,m;
  23. char s[N];
  24. void pushup(int k){
  25.     memset(t[k],0,sizeof(t[k]));
  26.     For(i,0,1) For(j,0,1)
  27.         t[k][i][j]=(1ll*t[k*2][i][0]*t[k*2+1][0][j]+1ll*t[k*2][i][1]*t[k*2+1][1][j])%mo;
  28. }
  29. void build(int k,int l,int r){
  30.     if (l==r){
  31.         memset(t[k],0,sizeof(t[k]));
  32.         t[k][1][0]=1;
  33.         t[k][0][0]=s[l]+1;
  34.         if (s[l]==1) t[k][0][1]=9-s[l+1];
  35.         return;
  36.     }
  37.     int mid=(l+r)/2;
  38.     build(k*2,l,mid);
  39.     build(k*2+1,mid+1,r);
  40.     pushup(k);
  41. }
  42. void change(int k,int l,int r,int p){
  43.     if (l==r){
  44.         memset(t[k],0,sizeof(t[k]));
  45.         t[k][1][0]=1;
  46.         t[k][0][0]=s[l]+1;
  47.         if (s[l]==1) t[k][0][1]=9-s[l+1];
  48.         return;
  49.     }
  50.     int mid=(l+r)/2;
  51.     if (p<=mid) change(k*2,l,mid,p);
  52.     else change(k*2+1,mid+1,r,p);
  53.     pushup(k);
  54. }
  55. int main(){
  56.     scanf("%d%d%s",&n,&m,s+1);
  57.     For(i,1,n) s[i]-='0';
  58.     build(1,1,n);
  59.     while (m--){
  60.         int x,y;
  61.         scanf("%d%d",&x,&y);
  62.         s[x]=y;
  63.         if (x!=1) change(1,1,n,x-1);
  64.         change(1,1,n,x);
  65.         printf("%d\n",t[1][0][0]);
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement