제출 #228519

#제출 시각아이디문제언어결과실행 시간메모리
228519chctxdy68Combo (IOI18_combo)C++14
5 / 100
1 ms204 KiB
#include <bits/stdc++.h>
#include <combo.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define fastio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define ll long long
#define ull unsigned long long
#define ld long double
#define pii pair <int, int>
#define pll pair <ll, ll>
#define pci pair <char, int>
#define pld pair <ld, ld>
#define ppld pair <pld, pld>
#define ppll pair <pll, pll>
#define pldl pair <ld, ll>
#define vll vector <ll>
#define vvll vector <vll>
#define vpll vector <pll>
#define pb push_back
#define eb emplace_back
#define mp make_pair
#define fi first
#define se second
#define mll map <ll, ll>
#define fastmap gp_hash_table
#define cd complex <double>
#define vcd vector <cd>
#define PI 3.14159265358979
#define ordered_set tree <ll, null_type, less <ll>, rb_tree_tag, tree_order_statistics_node_update>
#pragma 03
using namespace std;
using namespace __gnu_pbds;
char cc[] = {'A', 'B', 'X', 'Y'};
bool marked[4];
string guess_sequence(int n){
	char f;
	if (press("AB") == 0){
		if (press("X") == 0) f = 'Y';
		else f = 'X'; 
	}
	else{
		if (press("A") == 0) f = 'B';
		else f = 'A';
	}
	for (ll i = 0; i < 4; i++){
		if (cc[i] == f) marked[i] = 1;
	}
	string prefix; prefix.pb(f);
	char b = '?', x = '?';
	for (ll i = 0; i < 4; i++){
		if (!marked[i]){
			if (b == '?') b = cc[i];
			else x = cc[i];
		}
	}
	for (ll i = 1; i < n - 1; i++){
		string q;
		string qb = prefix; qb.pb(b);
		for (ll j = 0; j < 4; j++){
			if (!marked[j]){
				q += qb; q.pb(cc[j]);
			}
		}
		q += prefix; q.pb(x);
		if (q.length() > 4 * n) exit(-1);
		ll cnt = press(q);
		if (cnt == prefix.length() + 2) prefix.pb(b);
		else if (cnt == prefix.length() + 1) prefix.pb(x);
		else{
			for (ll j = 0; j < 4; j++){
				if ((!marked[j]) && (cc[j] != b) && (cc[j] != x)) prefix.pb(cc[j]);
			}
		}
	}
	string q = prefix; q.pb('A'); q += prefix; q.pb('B');
	if (press(q) > prefix.length()){
		q = prefix; q.pb('A'); 
		if (press(q) > prefix.length()) prefix.pb('A');
		else prefix.pb('B');
 	}
 	else{
 		q = prefix; q.pb('X');
 		if (press(q) > prefix.length()) prefix.pb('X');
 		else prefix.pb('Y');
	}
	return prefix;
}

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

combo.cpp:30: warning: ignoring '#pragma 03 ' [-Wunknown-pragmas]
   30 | #pragma 03
      | 
combo.cpp: In function 'std::string guess_sequence(int)':
combo.cpp:65:18: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   65 |   if (q.length() > 4 * n) exit(-1);
      |       ~~~~~~~~~~~^~~~~~~
combo.cpp:67:11: 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]
   67 |   if (cnt == prefix.length() + 2) prefix.pb(b);
      |       ~~~~^~~~~~~~~~~~~~~~~~~~~~
combo.cpp:68:16: 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]
   68 |   else if (cnt == prefix.length() + 1) prefix.pb(x);
      |            ~~~~^~~~~~~~~~~~~~~~~~~~~~
combo.cpp:76:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   76 |  if (press(q) > prefix.length()){
      |      ~~~~~~~~~^~~~~~~~~~~~~~~~~
combo.cpp:78:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |   if (press(q) > prefix.length()) prefix.pb('A');
      |       ~~~~~~~~~^~~~~~~~~~~~~~~~~
combo.cpp:83:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   83 |    if (press(q) > prefix.length()) prefix.pb('X');
      |        ~~~~~~~~~^~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...