제출 #1132656

#제출 시각아이디문제언어결과실행 시간메모리
1132656MrAndriaPassword (RMI18_password)C++17
0 / 100
0 ms320 KiB
#include <bits/stdc++.h> using namespace std; int query(string str); string merge(string a,string b){ string s="",pas=""; int curr=b.size()-1; for(int i=a.size();i>0;i--){ while(curr>=0){ s=""; for(int i1=0;i1<=i-1;i1++){ s.push_back(a[i1]); } for(int i1=curr;i<=int(b.size())-1;i1++){ s.push_back(b[i1]); } // cout<<s<<" "<<b.size()<<endl; if(query(s)==int(s.size())){ pas.push_back(b[curr]); curr--; }else{ break; } } pas.push_back(a[i-1]); } // cout<<curr<<endl; while(curr>=0){ pas+=b[curr]; curr--; } reverse(pas.begin(),pas.end()); return pas; } string guess(int n, int s){ cin>>n>>s; string s1; set <pair <int,string > > se; int l; for(int j=1;j<=s;j++){ s1=""; for(int i=1;i<=n;i++){ s1.push_back(char(j+'a'-1)); } l=query(s1); s1=""; for(int i=1;i<=l;i++){ s1.push_back(char(j+'a'-1)); } if(int(s1.size())>=1)se.insert(make_pair(int(s1.size()),s1)); } while(se.size()>=2){ auto a=(*(se.begin())); se.erase(se.begin()); auto b=(*(se.begin())); se.erase(se.begin()); s1=merge(a.second,b.second); se.insert(make_pair(s1.size(),s1)); } if(se.size()==0)assert(0); return (*(se.begin())).second; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...