제출 #653896

#제출 시각아이디문제언어결과실행 시간메모리
653896MasterTasterPassword (RMI18_password)C++14
100 / 100
219 ms848 KiB
#include <iostream> #include <string> #define pb push_back #define pii pair<int, int> #define xx first #define yy second #define ll long long using namespace std; int cnt[30]; int query(string q); bool check1(char c, int k) { string pitaj=""; for (int i=0; i<k; i++) pitaj+=c; return query(pitaj)==pitaj.size(); } string napravi(char c, int k) { string s=""; for (int i=0; i<k; i++) s+=c; return s; } bool check2(string a, int i, string dodaj) { string pitaj=""; if (i!=0) pitaj=a.substr(0, i); pitaj+=dodaj; if ((a.size()-i)!=0) pitaj+=a.substr(i, a.size()-i); return query(pitaj)==pitaj.size(); } string spoj(string a, string b) { if (a.size()>b.size()) swap(a, b); int j=0; string ret=""; for (int i=0; i<=a.size(); i++) { string dodajes=""; while (j<b.size()) { dodajes+=b[j]; if(check2(a, i, dodajes)) { ret+=b[j]; j++; } else break; } if (i!=a.size()) ret+=a[i]; } return ret; } string mergesort(int l, int r) { if (l==r) return napravi((char)('a'+l), cnt[l]); int mid=l+(r-l)/2; string a, b; a=mergesort(l, mid); b=mergesort(mid+1, r); string ret=spoj(a, b); return ret; } string guess(int n, int m) { for (int i=0; i<m; i++) { char c=(char)('a'+i); int l=1, r=n; while (l<=r) { int mid=l+(r-l)/2; if (check1(c, mid)) { l=mid+1; cnt[i]=mid; } else r=mid-1; } } return mergesort(0, m-1); }

컴파일 시 표준 에러 (stderr) 메시지

password.cpp: In function 'bool check1(char, int)':
password.cpp:20:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |     return query(pitaj)==pitaj.size();
      |            ~~~~~~~~~~~~^~~~~~~~~~~~~~
password.cpp: In function 'bool check2(std::string, int, std::string)':
password.cpp:36:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     return query(pitaj)==pitaj.size();
      |            ~~~~~~~~~~~~^~~~~~~~~~~~~~
password.cpp: In function 'std::string spoj(std::string, std::string)':
password.cpp:45:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     for (int i=0; i<=a.size(); i++)
      |                   ~^~~~~~~~~~
password.cpp:48:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |         while (j<b.size())
      |                ~^~~~~~~~~
password.cpp:58:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   58 |         if (i!=a.size()) ret+=a[i];
      |             ~^~~~~~~~~~
#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...