답안 #773280

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
773280 2023-07-04T18:48:36 Z BT21tata Password (RMI18_password) C++17
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
using namespace std;



struct cmp
{
  bool operator()(const string &a, const string &b)
  {
    return a.size()>b.size();
  }
};

string mrg(string &a, string &b)
{
  string ret;
  int pos1=0, pos2=0;
  while(true)
  {
    if(pos1==a.size() or pos2==b.size()) break;
    string cur=ret;
    cur+=a[pos1];
    for(int i=pos2; i<b.size(); i++)
      cur+=b[i];
    int q=query(cur);
    if(q==pos1+b.size()+1)
      ret+=a[pos1++];
    else ret+=b[pos2++];
  }
  while(pos1<a.size()) ret+=a[pos1++];
  while(pos2<b.size()) ret+=b[pos2++];
  return ret;
}


string guess(int n, int s)
{
  priority_queue<string, vector<string>, cmp>q;
  for(int i=0; i<s; i++)
  {
    string s, sec;
    for(int j=0; j<n; j++)
      s+=(char)(i+'a');
    int ret=query(s);
    if(!ret) continue;
    for(int i=0; i<ret; i++)
      sec+=(char)(i+'a');
    q.push(sec);
  }

  while(q.size()>1)
  {
    string s1=q.top(); q.pop();
    string s2=q.top(); q.pop();
    string merged=mrg(s1, s2);
    q.push(merged);
  }
  return q.top();
}

Compilation message

password.cpp: In function 'std::string mrg(std::string&, std::string&)':
password.cpp:20:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |     if(pos1==a.size() or pos2==b.size()) break;
      |        ~~~~^~~~~~~~~~
password.cpp:20:30: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |     if(pos1==a.size() or pos2==b.size()) break;
      |                          ~~~~^~~~~~~~~~
password.cpp:23:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |     for(int i=pos2; i<b.size(); i++)
      |                     ~^~~~~~~~~
password.cpp:25:11: error: 'query' was not declared in this scope
   25 |     int q=query(cur);
      |           ^~~~~
password.cpp:26:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |     if(q==pos1+b.size()+1)
      |        ~^~~~~~~~~~~~~~~~~
password.cpp:30:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |   while(pos1<a.size()) ret+=a[pos1++];
      |         ~~~~^~~~~~~~~
password.cpp:31:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |   while(pos2<b.size()) ret+=b[pos2++];
      |         ~~~~^~~~~~~~~
password.cpp: In function 'std::string guess(int, int)':
password.cpp:44:13: error: 'query' was not declared in this scope
   44 |     int ret=query(s);
      |             ^~~~~