Advertisement
Guest User

Pair of Strings - CRANPAIR - Cranium 2015

a guest
Feb 14th, 2015
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None | 0 0
  1. /*  Sanchit Abrol  */
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. #define pb push_back
  6. #define mp make_pair
  7. #define all(X) (X).begin(),(X).end()
  8. #define tr(c,i) for(typeof((c).begin()) i = (c).begin(); i != (c).end(); i++)
  9. #define s(a) scanf("%d", &a)
  10.  
  11. int N,i,j,T,k,ans[5010*5010];
  12. char a[5010], b[5010];
  13. long long MOD = 1000000007;
  14.  
  15. int main()
  16. {
  17.     s(N);
  18.     s(k);
  19.     scanf("%s", a);
  20.     scanf("%s", b);    
  21.     for(i = 0; i+k-1 < N; i++)
  22.     {
  23.         int st = (N-k+1) * i;
  24.         int ap = i, bp = 0, c = 0;
  25.         for(j = 0; j < k; j++, ap++, bp++)
  26.             c += (a[ap] == b[bp]);
  27.         ans[st] = c;                            
  28.         while(ap < N)
  29.         {
  30.             c = c - (a[ap-k] == b[bp-k]) + (a[ap] == b[bp]);
  31.             st += N-k+2;
  32.             ans[st] = c;            
  33.             ap++; bp++;
  34.         }
  35.     }
  36.     for(i = 1; i+k-1 < N; i++)
  37.     {
  38.         int st = i;
  39.         int ap = 0, bp = i, c = 0;
  40.         for(j = 0; j < k; j++, ap++, bp++)
  41.             c += (a[ap] == b[bp]);
  42.         ans[st] = c;                    
  43.         while(bp < N)
  44.         {
  45.             c = c - (a[ap-k] == b[bp-k]) + (a[ap] == b[bp]);
  46.             st += N-k+2;
  47.             ans[st] = c;            
  48.             ap++; bp++;
  49.         }
  50.     }
  51.     int x = (N - k + 1) * (N - k + 1);
  52.     long long fans = 0;
  53.     for(i = 0; i < x; i++)
  54.     {        
  55.         fans += ((long long)ans[i] * (i+1)) % MOD;
  56.         if(fans >= MOD)
  57.             fans -= MOD;
  58.     }
  59.     printf("%lld\n", fans);
  60.    
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement