Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- inline void Open(const string Name)
- {
- #ifndef ONLINE_JUDGE
- (void)!freopen((Name+".in").c_str(),"r",stdin);
- (void)!freopen((Name+".out").c_str(),"w",stdout);
- #endif
- }
- vector <char> ans[10001],v[27];
- vector <int> a[27];
- char s[10001],key[10001];
- int H[10001];
- int Task,len,idx;
- void solve1()
- {
- len=strlen(key+1);
- for(int i=1;s[i];++i)
- {
- ++idx;
- v[key[idx]-'A'].emplace_back(s[i]);
- if(idx==len)
- idx=0;
- }
- for(int i=0;i<=26;++i)
- for(char&ch:v[i])
- cout<<ch;
- }
- void solve2()
- {
- int len=strlen(key+1),lenn=strlen(s+1),mx=0;
- for(int i=1;i<=len;++i)
- H[i]=lenn/len,mx=max(mx,H[i]);
- for(int i=1;i<=lenn%len;++i)
- ++H[i],mx=max(mx,H[i]);
- for(int i=1;i<=len;++i)
- a[key[i]-'A'].emplace_back(i);
- int idx=1;
- for(int i=0;i<=26;++i)
- if(!a[i].empty())
- {
- int sum=0,nr=a[i].size(),idxx=0;
- for(int idx:a[i])
- sum+=H[idx];
- while(sum--)
- {
- ans[a[i][idxx]].emplace_back(s[idx]);
- ++idx,++idxx;
- if(idxx==nr)
- idxx=0;
- }
- }
- for(int i=0;i<mx;++i) {
- for(int j=1;j<=len;++j)
- if(H[j]>=i+1)
- cout<<ans[j][i];
- }
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- Open("myszkowski");
- cin>>Task;
- cin>>(s+1)>>(key+1);
- if(Task==1)
- solve1();
- else
- solve2();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement