Guest User

Untitled

a guest
Apr 19th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. #define INF 1<<30
  5.  
  6. int N = 1000000;
  7.  
  8. int let1[30];
  9. int let2[30][30];
  10. int let3[30][30][30];
  11.  
  12. char sir[1000002];
  13. pair<char, int>val;
  14. pair<char, int>my;
  15.  
  16. void upgrade(int poz)
  17. { let1[sir[poz] - 97]++;
  18.  
  19. let2[sir[poz - 1] - 97][sir[poz] - 97]++;
  20.  
  21. let3[sir[poz - 2] - 97][sir[poz - 1] - 97][sir[poz] - 97]++;
  22. }
  23.  
  24. int get_min(char a, int poz)
  25. { int minn = INF;
  26.  
  27. minn = min(minn, let1[a - 97]);
  28.  
  29. minn = min(minn, let2[sir[poz - 1] - 97][a]);
  30.  
  31. minn = min(minn, let3[sir[poz - 2] - 97][sir[poz - 1] - 97][a]);
  32.  
  33. return minn;
  34. }
  35.  
  36. int main()
  37. { int i, j;
  38.  
  39. sir[1] = rand() % 26 + 97;
  40. let1[sir[1] - 97]++;
  41.  
  42. sir[2] = rand() % 26 + 97;
  43. let2[sir[1] - 97][sir[2] - 97]++;
  44.  
  45. sir[3] = rand() % 26 + 97;
  46. let3[sir[1] - 97][sir[2] - 97][sir[3] - 97]++;
  47.  
  48. for(i = 4; i <= N; i++)
  49. { my.second = INF;
  50.  
  51. for(j = 1; j <= 5; j++)
  52. { val.first = rand() % 26 + 97;
  53. val.second = get_min(val.first, i);
  54. if(my.second > val.second) my = val;
  55. }
  56.  
  57. sir[i] = my.first;
  58. upgrade(i);
  59. }
  60.  
  61. for(i = 1; i <= N; i++)
  62. cout<<sir[i];
  63. return 0;
  64. }
Add Comment
Please, Sign In to add comment