Advertisement
Malinovsky239

Untitled

Nov 17th, 2011
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.98 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. char s[1000010];
  7. long long hash[1000010];
  8. long long res[1000010];
  9. const
  10. int p = 239017;
  11.  
  12. long long pr(long long p, int d)
  13. {
  14.   long long l = p;
  15.   for (int i = 1; i < d; i++)
  16.   {
  17.     l = l * p;
  18.   }
  19.   return l;
  20. }
  21.  
  22. int main()
  23. {
  24.   int n, i, k;
  25.   freopen("autoreg.in", "r", stdin);
  26.   freopen("autoreg.out", "w", stdout);
  27.   gets(s);
  28.   scanf("%d", &k);
  29.   hash[0] = s[0];
  30.   n = strlen(s);
  31.   for (i = 1; i < n;i++)
  32.   {
  33.     hash[i] = hash[i - 1] * p + s[i];
  34.     printf("%I64d\n", hash[i]);
  35.   }
  36.   printf("\n");
  37.   for (i = 0; i < n - k + 1; i++)
  38.   {
  39.     if (i)
  40.       res[i] = hash[i + k - 1] - hash[i - 1] * pr(p, k);
  41.     else
  42.       res[i] = hash[i + k - 1];        
  43.     printf("%I64d\n", res[i]);
  44.   }
  45.   sort (res, res + (n - k + 1));
  46.  
  47.   for (i = 0; i < n - k; i++)
  48.   {
  49.     if (res[i] == res[i + 1])
  50.     {
  51.       printf("YES");
  52.       return 0;
  53.     }
  54.   }
  55.   printf("NO");
  56.   return 0;
  57. }
  58.  
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement