Submission #845347

#TimeUsernameProblemLanguageResultExecution timeMemory
845347vjudge1Trener (COCI20_trener)C++17
110 / 110
1674 ms6232 KiB
#ifndef Local #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #endif #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/detail/standard_policies.hpp> #define int long long #define pb push_back #define lim 300000 #define till 40001 // # of primes till 1e6 = 7e4 using namespace std; using namespace __gnu_pbds; typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set; using pii = array<int,2>; const int mod=1000000007ll; bool sbc(string*s1,string*s2){ int i=0; bool nope=0; for(;i<s1->size();i++){ if(s1->at(i)!=s2->at(i)){ nope=1; break; } } if(!nope)return 1; i=0; nope=0; for(;i<s1->size();i++){ if(s1->at(i)!=s2->at(i+1)){ nope=1; break; } } if(!nope)return 1; return 0; } void solve(){ int n,k; cin>>n>>k; string s[n][k]; for(int i=0;i<n;i++){ for(int j=0;j<k;j++){ cin>>s[i][j]; } } int dp[n][k]; for(int i=0;i<n;i++)for(int j=0;j<k;j++){ dp[i][j]=0; } for(int i=0;i<k;i++)dp[n-1][i]=1; for(int i=n-2;0<=i;i--){ for(int j=0;j<k;j++){ for(int t=0;t<k;t++){ if(sbc(&s[i][j],&s[i+1][t])){ dp[i][j]+=dp[i+1][t]; dp[i][j]%=mod; } } } } /* for(int i=0;i<n;i++){ for(int j=0;j<k;j++){ cerr<<dp[i][j]<<" "; }cerr<<"\n"; } */ int ans=0; for(int i=0;i<k;i++){ ans+=dp[0][i]; ans%=mod; } cout<<ans<<"\n"; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); #ifdef Local #ifndef INTERACTIVE freopen("in","r",stdin); #endif freopen("out","w",stdout); #endif int t=1; //cin>>t; while (t--) { solve(); } }

Compilation message (stderr)

trener.cpp: In function 'bool sbc(std::string*, std::string*)':
trener.cpp:25:11: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |     for(;i<s1->size();i++){
      |          ~^~~~~~~~~~~
trener.cpp:34:11: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |     for(;i<s1->size();i++){
      |          ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...