fork(1) download
  1. #include <stdio.h>
  2. #include <string.h>
  3. using namespace std;
  4.  
  5. unsigned short S[300][1 << 16];
  6. char A[300];
  7.  
  8. int main()
  9. {
  10. int n, i;
  11. char type;
  12. scanf("%d\n", &n);
  13.  
  14. while(n--)
  15. {
  16. gets(A);
  17. int len = strlen(A);
  18.  
  19. unsigned short hash = 0, p_pow = 0;
  20. if (A[0] == '+')
  21. {
  22. for(i = 1, len--; i < len; i++)
  23. {
  24. hash += (A[i] - 'a') << p_pow;
  25. p_pow += 2;
  26. S[i][hash]++;
  27. }
  28. }
  29. else
  30. {
  31. for(i = 1; i < len; i++)
  32. {
  33. hash += (A[i] - 'a') << p_pow;
  34. p_pow += 2;
  35. }
  36. printf("%d\n", (int)S[len - 1][hash]);
  37. }
  38. }
  39. }
Success #stdin #stdout 0s 41136KB
stdin
4
+abcd
?abc
+abc
?ab
stdout
1
2