Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- #define INF 1<<30
- int N = 1000000;
- int let1[30];
- int let2[30][30];
- int let3[30][30][30];
- char sir[1000002];
- pair<char, int>val;
- pair<char, int>my;
- void upgrade(int poz)
- { let1[sir[poz] - 97]++;
- let2[sir[poz - 1] - 97][sir[poz] - 97]++;
- let3[sir[poz - 2] - 97][sir[poz - 1] - 97][sir[poz] - 97]++;
- }
- int get_min(char a, int poz)
- { int minn = INF;
- minn = min(minn, let1[a - 97]);
- minn = min(minn, let2[sir[poz - 1] - 97][a]);
- minn = min(minn, let3[sir[poz - 2] - 97][sir[poz - 1] - 97][a]);
- return minn;
- }
- int main()
- { int i, j;
- sir[1] = rand() % 26 + 97;
- let1[sir[1] - 97]++;
- sir[2] = rand() % 26 + 97;
- let2[sir[1] - 97][sir[2] - 97]++;
- sir[3] = rand() % 26 + 97;
- let3[sir[1] - 97][sir[2] - 97][sir[3] - 97]++;
- for(i = 4; i <= N; i++)
- { my.second = INF;
- for(j = 1; j <= 5; j++)
- { val.first = rand() % 26 + 97;
- val.second = get_min(val.first, i);
- if(my.second > val.second) my = val;
- }
- sir[i] = my.first;
- upgrade(i);
- }
- for(i = 1; i <= N; i++)
- cout<<sir[i];
- return 0;
- }
Add Comment
Please, Sign In to add comment