Advertisement
a53

cripto1

a53
Oct 29th, 2021
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. #include <fstream>
  2. #include <set>
  3. #define nmax 100005
  4. #define kmax 15
  5. #define sigma 26
  6. #include <unordered_set>
  7. #include <string>
  8. using namespace std;
  9. string s[nmax],p[nmax],pcopy[nmax];
  10. int l[kmax];
  11. int n,m,k,q;
  12. long long pnr[nmax];
  13. unordered_set <long long> my_set;
  14.  
  15. long long int make_number(string p)
  16. {
  17. long long int ret=0;
  18. for(int i=k-1;i>=0;--i)
  19. ret=ret*sigma+p[i]-'a';
  20. return ret;
  21. }
  22.  
  23. int main()
  24. {
  25. int cntmax=-1,sol=0;
  26. ifstream f("cripto1.in");
  27. f>>n>>m>>k>>q;
  28. for(int i=1;i<=n;++i) /// Citesc limbajul
  29. f>>s[i],my_set.insert(make_number(s[i]));
  30. for(int i=1;i<=m;++i) /// Citesc cuvintele
  31. f>>p[i],pnr[i]=make_number(p[i]);
  32. for(int i=1;i<=q;++i)
  33. {
  34. int cnt=0;
  35. long long hash_number=0;
  36. for(int j=0;j<k;++j)
  37. f>>l[j];
  38. for(int j=k-1;j>=0;--j)
  39. hash_number=hash_number*sigma+l[j];
  40. for(int j=1;j<=m;++j)
  41. if(my_set.find(pnr[j]+hash_number)!=my_set.end())
  42. ++cnt;
  43. if(cnt>cntmax)
  44. cntmax=cnt,sol=i;
  45. }
  46. ofstream g("cripto1.out");
  47. g<<sol<<' '<<cntmax<<'\n';
  48. return 0;
  49. }
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement