Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <list>
- #include <stdio.h>
- std::list<size_t>alphabet;
- size_t getEncodeNum(size_t cur_num){
- auto it = std::find(alphabet.begin(), alphabet.end(), cur_num);
- size_t index = std::distance(alphabet.begin(), it);
- alphabet.splice(alphabet.begin(), alphabet, it);
- return index + 1;
- }
- size_t getDecodeNum(size_t cur_num){
- auto it = alphabet.begin();
- advance(it, cur_num - 1);
- size_t ans = *it;
- alphabet.splice(alphabet.begin(), alphabet, it);
- return ans;
- }
- int main() {
- size_t n, m, type;
- scanf("%d", &n);
- scanf("%d", &m);
- scanf("%d", &type);
- for (int i = 0; i < m; ++i){
- alphabet.push_back(i + 1);
- }
- size_t next_num;
- if (type == 1){ // code
- for (int i = 0; i < n; ++i){
- scanf("%d", &next_num);
- printf("%d ", getEncodeNum(next_num));
- }
- } else{ //decode
- for (int i = 0; i < n; ++i){
- scanf("%d", &next_num);
- printf("%d ", getDecodeNum(next_num));
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement