Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define boAshraf ios_base::sync_with_stdio(false); cin.tie(NULL);
- #define ll long long
- #define sz(s) (int)(s).size()
- #define all(s) (s).begin(),(s).end()
- using namespace std;
- void File();
- void sol();
- const int N=5001;
- int sum[N];
- vector<int> ans[N]{};
- vector<int>fs;
- set<int>rem;
- void dfs(int sq,int sb,int len){
- if(sz(fs)>26)return;
- int k=sq-sb;
- auto it=rem.find(k);
- if(sb && sum[k]>len && it!=rem.end()){
- rem.erase(it);
- sum[k]=len;
- ans[k]=fs;
- }
- if(rem.empty())return;
- for(int i=1;i<=N;i++){
- int new_sq=sq*(i+1);
- int new_sb=sb+i*(len+1);
- k=new_sq-new_sb;
- if(k>5000)break;
- fs.emplace_back(i);
- dfs(new_sq,new_sb,len+i);
- fs.pop_back();
- }
- }
- int main() {
- boAshraf
- File();
- int t = 1;
- // cin >> t;
- while (t--) {
- sol();
- }
- return 0;
- }
- void sol() {
- int n;
- cin>>n;
- vector<int>v;
- for (int i = 0; i < n; ++i) {
- int x;cin>>x;
- rem.insert(x);
- v.emplace_back(x);
- }
- memset(sum,'?',sizeof sum);
- dfs(1,0,0);
- for(auto it:v){
- char c='a';
- for(auto itt:ans[it]){
- cout<<string(itt,c++);
- }
- cout<<'\n';
- }
- }
- void File() {
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment