Submission #92102

#TimeUsernameProblemLanguageResultExecution timeMemory
92102314rateTavan (COCI16_tavan)C++14
48 / 80
2 ms504 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const int N=500+5; const ll INF=(1LL<<60); int n,hid,pos; ll x; ll add(ll a,ll b) { return min(a+b,INF); } ll mul(ll a,ll b) { if(a==INF || b==INF) { return INF; } if(a==0 || b==0) { return 0; } ll res=a*b; if(res%a || res%b || res/a!=b || res/b!=a || res>=INF) { return INF; } else { return res; } } ll expow(ll a,ll b) { ll res=1; while(b) { if(b&1) { res=mul(res,a); } a=mul(a,a); b>>=1; } return res; } string s; vector<int>w; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>hid>>pos>>x; cin>>s; for(int i=0;i<n;i++) { if(s[i]=='#') { w.push_back(i); } } for(int i=1;i<=hid;i++) { string a; cin>>a; sort(a.begin(),a.end()); for(int j=1;j<=pos;j++) { ll mx=mul(j,expow(pos,hid-i)); if(x<=mx) { x-=mul(j-1,expow(pos,hid-i)); s[w[i-1]]=a[j-1]; break; } } } cout<<s<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...