Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <list>
  4. #include <stdio.h>
  5.  
  6.  
  7. std::list<size_t>alphabet;
  8.  
  9. size_t getEncodeNum(size_t cur_num){
  10.     auto it = std::find(alphabet.begin(), alphabet.end(), cur_num);
  11.     size_t index = std::distance(alphabet.begin(), it);
  12.     alphabet.splice(alphabet.begin(), alphabet, it);
  13.     return index + 1;
  14. }
  15.  
  16. size_t getDecodeNum(size_t cur_num){
  17.     auto it = alphabet.begin();
  18.     advance(it, cur_num - 1);
  19.     size_t ans = *it;
  20.     alphabet.splice(alphabet.begin(), alphabet, it);
  21.     return ans;
  22. }
  23.  
  24.  
  25. int main() {
  26.     size_t n, m, type;
  27.     scanf("%d", &n);
  28.     scanf("%d", &m);
  29.     scanf("%d", &type);
  30.  
  31.  
  32.     for (int i = 0; i < m; ++i){
  33.         alphabet.push_back(i + 1);
  34.     }
  35.  
  36.     size_t next_num;
  37.     if (type == 1){ // code
  38.         for (int i = 0; i < n; ++i){
  39.             scanf("%d", &next_num);
  40.             printf("%d ", getEncodeNum(next_num));
  41.         }
  42.     } else{ //decode
  43.         for (int i = 0; i < n; ++i){
  44.             scanf("%d", &next_num);
  45.             printf("%d ", getDecodeNum(next_num));
  46.         }
  47.     }
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement