Advertisement
Kaidul

Crypto Collumns

Sep 18th, 2013
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define _ ios_base:sync_with_stdio(0);cin.tie(0);
  3. using namespace std;
  4. /*** typedef ***/
  5. #define MEMSET_INF 127
  6. #define MEMSET_HALF_INF 63
  7. #define stream istringstream
  8. #define rep(i,n) for(__typeof(n) i=0; i<(n); i++)
  9. #define repl(i,n) for(__typeof(n) i=1; i<=(n); i++)
  10. #define FOR(i,a,b) for(__typeof(b) i=(a); i<=(b); i++)
  11. #define INF (1<<30)
  12. #define PI acos(-1.0)
  13. #define pb push_back
  14. #define ppb pop_back
  15. #define all(x) x.begin(),x.end()
  16. #define mem(x,y) memset(x,y,sizeof(x))
  17. #define memsp(x) mem(x,MEMSET_INF)
  18. #define memdp(x) mem(x,-1)
  19. #define memca(x) mem(x,0)
  20. #define eps 1e-9
  21. #define pii pair<int,int>
  22. #define pmp make_pair
  23. #define ft first
  24. #define sd second
  25. #define vi vector<int>
  26. #define vpii vector<pii>
  27. #define si set<int>
  28. #define msi map<string , int >
  29. #define mis map<int , string >
  30. typedef long long i64;
  31. typedef unsigned long long ui64;
  32. /** function **/
  33. #define SDi(x) sf("%d",&x)
  34. #define SDl(x) sf("%lld",&x)
  35. #define SDs(x) sf("%s",x)
  36. #define SD2(x,y) sf("%d%d",&x,&y)
  37. #define SD3(x,y,z) sf("%d%d%d",&x,&y,&z)
  38. #define pf printf
  39. #define print(x) pf("%d ", x)
  40. #define println(x) pf("%d\n", x)
  41. #define sf scanf
  42. #define READ(f) freopen(f, "r", stdin)
  43. #define WRITE(f) freopen(f, "w", stdout)
  44.  
  45. #define Row 101
  46. #define Col 11
  47.  
  48. struct key {
  49.     char c;
  50.     int pos;
  51.     bool operator < (const key a) const {
  52.         return c < a.c;
  53.     }
  54. }keyword[Col];
  55.  
  56. int main() {
  57. #ifndef ONLINE_JUDGE
  58.     READ("input.txt");
  59. #endif
  60.     char message[Row][Col];
  61.     char keywords[Col], ciphertext[Row];
  62.     while (gets(keywords)) {
  63.         if (strcmp(keywords, "THEEND") == 0) break;
  64.         gets(ciphertext);
  65.  
  66.         int lenK = strlen(keywords);
  67.         rep(i, lenK) {
  68.             keyword[i].c = keywords[i];
  69.             keyword[i].pos = i;
  70.         }
  71.         sort(keyword, keyword + lenK);
  72.         int indx = 0, lenC = strlen(ciphertext), line = ceil(lenC / lenK);
  73.         rep(i, lenK) {
  74.             rep(j, line) {
  75.                 message[j][(int)keyword[i].pos] = ciphertext[indx + j];
  76.             }
  77.             indx += line;
  78.         }
  79.         rep(i, line) {
  80.             rep(j, lenK) {
  81.                 cout << message[i][j];
  82.             }
  83.         }
  84.         cout << "\n";
  85.     }
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement