Submission #272382

#TimeUsernameProblemLanguageResultExecution timeMemory
272382FashoLucky Numbers (RMI19_lucky)C++14
100 / 100
77 ms11000 KiB
#include <bits/stdc++.h> #define N 100005 #define ll long long int #define fo(i,x,y) for(int i=x;i<=y;i++) #define fs(ar,n) fo(i,1,n) cin>>ar[i] #define sp " " #define fast cin.tie(0);cout.tie(0);ios_base::sync_with_stdio(false) #define pb push_back #define ppb pop_back #define fi first #define se second #define ii pair<int,int> #define lli pair<ll,ll> #define mod 1000000007 using namespace std; ll n,m,ar[N],sum,t,dp[N][2]; char s[N]; ll add(ll x,ll y) { x%=mod; y%=mod; x+=y; x%=mod; x+=mod; x%=mod; return x; } ll f(int len,int tut) { if(len==0) return 1; if(dp[len][tut]!=-1) return dp[len][tut]; ll top=0; fo(i,0,9) { if(tut && i==3) continue; ll x=0; if(i==1) x=1; top=add(top,f(len-1,x)); } return dp[len][tut]=top; } // int get(int l,int r){ // int len=r-l; // int ans=0; // int flag=0; // rep(x,l,r+1){ // rep(y,0,ar[x]){ // if (flag && y==3) continue; // ans=(ans+f(len,y==1))%mod; // } // if (ar[x]==1) flag=1; // else if (flag && ar[x]==3) return ans; // else flag=0; // len--; // } // return (ans+1)%mod; // } void get(int l,int r){ int len=r-l; int ans=0; int flag=0; fo(x,l,r){ fo(y,0,ar[x]-1){ if (flag && y==3) continue; ans=(ans+f(len,y==1))%mod; } if (ar[x]==1) flag=1; else if (flag && ar[x]==3) { sum=ans; return; } else flag=0; len--; } sum=(ans+1)%mod; } int main() { fast; cin>>n>>m; cin>>s+1; fo(i,1,n) ar[i]=s[i]-'0'; memset(dp,-1,sizeof(dp)); // cout<<f(1,n)<<endl; // cout<<get(1,n); get(1,n); cout<<sum<<endl; while(m--) { ll a,b,c; cin>>a>>b>>c; if(a==2) ar[b]=c; else { get(b,c); cout<<sum<<endl; } } }

Compilation message (stderr)

lucky.cpp: In function 'int main()':
lucky.cpp:99:11: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   99 |     cin>>s+1;
      |          ~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...