답안 #709224

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
709224 2023-03-13T08:45:57 Z hmm789 Password (RMI18_password) C++14
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h>
using namespace std;
#define int long long
int query(string s);
string guess(int n, int s) {
	int cnt = 1;
	string ans = "";
	pair<int, int> occ[s];
	for(int i = 0; i < s; i++) {
		int l = 1, r = n+1;
		while(l < r) {
			int m = (l+r)/2;
			string s;
			
			for(int j = 0; j < m; j++) s += (char)('a'+i);
			//~ cout << "q" << cnt << ": " << s << endl;
			if(query(s) == m) l = m+1;
			else r = m;
		}
		occ[i].first = l-1;
		occ[i].second = i;
		//~ cout << "a " << i << " " << l-1 << endl;
	}
	sort(occ, occ+s);
	for(int i = 0; i < occ[0].first; i++) ans += (char)('a'+occ[0].second);
	for(int i = 1; i < s; i++) {
		//~ cout << "s" << i << ": " << ans << endl;
		int tmpcnt[ans.size()+1], sm = 0;
		memset(tmpcnt, 0, sizeof(tmpcnt));
		for(int j = ans.size(); j >= 0; j--) {
			int l = sm+1, r = occ[i].first+1;
			while(l < r) {
				int m = (l+r)/2;
				string tmp = "";
				for(int k = 0; k < j; k++) tmp += ans[k];
				for(int k = 0; k < m; k++) tmp += (char)('a'+occ[i].second);
				if(query(tmp) == tmp.size()) l = m+1;
				else r = m;
			}
			tmpcnt[j] = l-1-sm;
			sm += l-1-sm;
		}
		string tmp = "";
		for(int j = 0; j < ans.size(); j++) tmp += ans[j];
		//~ cout << "s" << i << ": " <<  tmp << endl;
		ans = "";
		for(int j = 0; j < tmpcnt[0]; j++) ans += (char)('a'+occ[i].second);
		for(int j = 1; j <= tmp.size(); j++) {
			//~ cout << "s" << i << "(" << j << "): " << ans << endl;
			ans += tmp[j-1];
			for(int k = 0; k < tmpcnt[j]; k++) ans += (char)('a'+occ[i].second);
		}
		//~ cout << "s" << i << ": " << ans << endl;
	}
	return ans;
}

Compilation message

password.cpp: In function 'std::string guess(long long int, long long int)':
password.cpp:37:19: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |     if(query(tmp) == tmp.size()) l = m+1;
      |        ~~~~~~~~~~~^~~~~~~~~~~~~
password.cpp:44:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |   for(int j = 0; j < ans.size(); j++) tmp += ans[j];
      |                  ~~^~~~~~~~~~~~
password.cpp:48:20: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   48 |   for(int j = 1; j <= tmp.size(); j++) {
      |                  ~~^~~~~~~~~~~~~
password.cpp:6:6: warning: unused variable 'cnt' [-Wunused-variable]
    6 |  int cnt = 1;
      |      ^~~
/usr/bin/ld: /tmp/ccAz5qCH.o: in function `main':
grader.cpp:(.text.startup+0x66): undefined reference to `guess[abi:cxx11](int, int)'
collect2: error: ld returned 1 exit status