Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int k;
- string s;
- map<int, int> cnt;
- vector<vector<char>> de_use;
- int32_t main()
- {
- cin >> k;
- de_use.resize(k + 1);
- getchar();
- getline(cin, s);
- int now = (int)s.size() - 1;
- cnt[1] ++;
- while(now > 0)
- {
- for(int i = 2; i <= k; i++)
- if(now-- > 0)
- cnt[i] ++;
- for(int i = k - 1; i > 0; i --)
- if(now-- > 0)
- cnt[i]++;
- }
- now = 0;
- for(int i = 1; i <= k; i++)
- {
- int new_ind = now + cnt[i];
- while(now != new_ind)
- de_use[i].push_back(s[now++]);
- }
- for(int i = 1; i <= k; i++)
- reverse(de_use[i].begin(), de_use[i].end());
- cout << de_use[1][--cnt[1]];
- de_use[1].pop_back();
- bool can = true;
- while(can)
- {
- for(int i = 2; i <= k; i++)
- {
- if(!de_use[i].empty())
- {
- cout << de_use[i][--cnt[i]];
- de_use[i].pop_back();
- }
- else
- can = false;
- }
- for(int i = k - 1; i > 0; i--)
- {
- if(!de_use[i].empty())
- {
- cout << de_use[i][--cnt[i]];
- de_use[i].pop_back();
- }
- else
- can = false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment