답안 #286968

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
286968 2020-08-31T08:12:53 Z crossing0ver Password (RMI18_password) C++17
50 / 100
635 ms 404 KB
#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define pii pair<int,int>
#define vi vector<int>
#define fi first
#define se second
#define all(x) (x).begin(),(x).end()
using namespace std;

int m;
string suf,pref;
int query(string str);
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
string guess(int n, int s) {
	string pref,P;
	vector<char> T;
	for (char i = 'a'; i < 'a' + s ; i++)
		T.pb(i);
	char fs = 'a';
	for (; pref.size() + suf.size() <= n; ) {
		int len = suf.size() + pref.size();
		char LAST = ((int)pref.size() ? pref.back() : 'a');
		int cur = len;
		vector<char> D = T;
		for (int z = 1; z + pref.size() + suf.size() <= n;) {
			bool flag = 0;
			vector<char> Q;
			shuffle(D.begin(),D.end(),rng);
		for (char c = max((pref.size() ? pref.back() : 'a'),(suf.size() ? suf[0] : 'a')); c < 'a' + s; c++){
	///	for (char c : D) {
			P = pref + c;
			P += suf;
			int F = query(P);
			if (F > cur) {
				LAST = c;
				pref += c;
				cur = F;
				flag  = 1;
				break;
			}
		//	else Q.pb(c);
		}
	//	for (char c :  Q) D.erase(find(all(D),c));
		if (flag == 0) break;
		}
		reverse(all(suf));
		if (pref.size())
		suf+=pref.back();
		reverse(all(suf));
		if (pref.size())
		pref.pop_back();
		if (pref.size() + suf.size() == n) {
			pref += suf;
			int Z = query(pref);
			return pref;
		}
	}
	pref += suf;
	int z = query(pref);
	return pref;
}
/*
main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

}*/

Compilation message

password.cpp: In function 'std::string guess(int, int)':
password.cpp:21:34: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   21 |  for (; pref.size() + suf.size() <= n; ) {
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
password.cpp:26:48: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   26 |   for (int z = 1; z + pref.size() + suf.size() <= n;) {
      |                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
password.cpp:53:32: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   53 |   if (pref.size() + suf.size() == n) {
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
password.cpp:55:8: warning: unused variable 'Z' [-Wunused-variable]
   55 |    int Z = query(pref);
      |        ^
password.cpp:23:8: warning: variable 'LAST' set but not used [-Wunused-but-set-variable]
   23 |   char LAST = ((int)pref.size() ? pref.back() : 'a');
      |        ^~~~
password.cpp:20:7: warning: unused variable 'fs' [-Wunused-variable]
   20 |  char fs = 'a';
      |       ^~
password.cpp:60:6: warning: unused variable 'z' [-Wunused-variable]
   60 |  int z = query(pref);
      |      ^
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Guessed the password with 144 queries.
2 Correct 4 ms 256 KB Guessed the password with 316 queries.
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Guessed the password with 120 queries.
2 Correct 3 ms 256 KB Guessed the password with 236 queries.
3 Correct 2 ms 256 KB Guessed the password with 126 queries.
4 Correct 3 ms 256 KB Guessed the password with 330 queries.
# 결과 실행 시간 메모리 Grader output
1 Correct 63 ms 376 KB Guessed the password with 5813 queries.
2 Correct 162 ms 384 KB Guessed the password with 12053 queries.
3 Correct 167 ms 404 KB Guessed the password with 15976 queries.
4 Correct 299 ms 380 KB Guessed the password with 22882 queries.
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Guessed the password with 144 queries.
2 Correct 4 ms 256 KB Guessed the password with 316 queries.
3 Correct 2 ms 256 KB Guessed the password with 120 queries.
4 Correct 3 ms 256 KB Guessed the password with 236 queries.
5 Correct 2 ms 256 KB Guessed the password with 126 queries.
6 Correct 3 ms 256 KB Guessed the password with 330 queries.
7 Correct 63 ms 376 KB Guessed the password with 5813 queries.
8 Correct 162 ms 384 KB Guessed the password with 12053 queries.
9 Correct 167 ms 404 KB Guessed the password with 15976 queries.
10 Correct 299 ms 380 KB Guessed the password with 22882 queries.
11 Incorrect 635 ms 384 KB Could not guess the password with 50000 queries.
12 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Guessed the password with 144 queries.
2 Correct 4 ms 256 KB Guessed the password with 316 queries.
3 Correct 2 ms 256 KB Guessed the password with 120 queries.
4 Correct 3 ms 256 KB Guessed the password with 236 queries.
5 Correct 2 ms 256 KB Guessed the password with 126 queries.
6 Correct 3 ms 256 KB Guessed the password with 330 queries.
7 Correct 63 ms 376 KB Guessed the password with 5813 queries.
8 Correct 162 ms 384 KB Guessed the password with 12053 queries.
9 Correct 167 ms 404 KB Guessed the password with 15976 queries.
10 Correct 299 ms 380 KB Guessed the password with 22882 queries.
11 Incorrect 635 ms 384 KB Could not guess the password with 50000 queries.
12 Halted 0 ms 0 KB -