Advertisement
a53

Myszkowski

a53
Apr 22nd, 2022
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. inline void Open(const string Name)
  5. {
  6. #ifndef ONLINE_JUDGE
  7. (void)!freopen((Name+".in").c_str(),"r",stdin);
  8. (void)!freopen((Name+".out").c_str(),"w",stdout);
  9. #endif
  10. }
  11.  
  12. vector <char> ans[10001],v[27];
  13. vector <int> a[27];
  14. char s[10001],key[10001];
  15. int H[10001];
  16. int Task,len,idx;
  17.  
  18. void solve1()
  19. {
  20. len=strlen(key+1);
  21. for(int i=1;s[i];++i)
  22. {
  23. ++idx;
  24. v[key[idx]-'A'].emplace_back(s[i]);
  25. if(idx==len)
  26. idx=0;
  27. }
  28.  
  29. for(int i=0;i<=26;++i)
  30. for(char&ch:v[i])
  31. cout<<ch;
  32. }
  33.  
  34. void solve2()
  35. {
  36. int len=strlen(key+1),lenn=strlen(s+1),mx=0;
  37.  
  38. for(int i=1;i<=len;++i)
  39. H[i]=lenn/len,mx=max(mx,H[i]);
  40. for(int i=1;i<=lenn%len;++i)
  41. ++H[i],mx=max(mx,H[i]);
  42. for(int i=1;i<=len;++i)
  43. a[key[i]-'A'].emplace_back(i);
  44. int idx=1;
  45. for(int i=0;i<=26;++i)
  46. if(!a[i].empty())
  47. {
  48. int sum=0,nr=a[i].size(),idxx=0;
  49. for(int idx:a[i])
  50. sum+=H[idx];
  51. while(sum--)
  52. {
  53. ans[a[i][idxx]].emplace_back(s[idx]);
  54. ++idx,++idxx;
  55. if(idxx==nr)
  56. idxx=0;
  57. }
  58. }
  59. for(int i=0;i<mx;++i) {
  60. for(int j=1;j<=len;++j)
  61. if(H[j]>=i+1)
  62. cout<<ans[j][i];
  63. }
  64. }
  65.  
  66. int main()
  67. {
  68. ios_base::sync_with_stdio(false);
  69. cin.tie(NULL);
  70. Open("myszkowski");
  71. cin>>Task;
  72. cin>>(s+1)>>(key+1);
  73.  
  74. if(Task==1)
  75. solve1();
  76. else
  77. solve2();
  78. return 0;
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement