Submission #218853

# Submission time Handle Problem Language Result Execution time Memory
218853 2020-04-02T21:06:46 Z Lawliet Xoractive (IZhO19_xoractive) C++14
41 / 100
6 ms 384 KB
#include "interactive.h"
#include <bits/stdc++.h>

using namespace std;
typedef pair<int,int> pii;

const int MAXN = 110;

int N;

int v[MAXN];

map< int , int > valuesBlock[MAXN];

vector<int> compress(vector<int> a)
{
	int sz = a.size();
	int r = sqrt( sz );

	vector<int> ans;

	for(int i = r ; i < sz ; i += 2)
		ans.push_back( a[i] );

	return ans;
}

vector<int> queryXor(vector<int> a)
{
	vector<int> ans = get_pairwise_xor( a );
	compress( ans );

	return ans;
}

vector<int> queryIntersection(vector<int> a, vector<int> b)
{
	vector< int > ans;
	vector< int > query;

	for(int i = 0 ; i < a.size() ; i++)
		query.push_back( a[i] );

	vector< int > answerWithout = queryXor( query );

	for(int i = 0 ; i < b.size() ; i++)
		query.push_back( b[i] );

	vector< int > answerWith = queryXor( query );
	
	int p = 0;

	for(int j = 0 ; j < answerWith.size() ; j++)
	{
		if( answerWith[j] == answerWithout[p] ) p++;
		else ans.push_back( answerWith[j] );
	}

	return ans;
}

vector< int > guess(int n) 
{
	vector< int > ans( n , 0 );

	int szBlock = 10;
	int qtdBlocks = (n - 1)/szBlock;

	if( n <= 15 )
	{
		for (int i = 1; i <= n; i++)
			ans[i - 1] = ask(i);

		return ans;
	}

	ans[0] = ask(1);

	for(int i = 0 ; i <= qtdBlocks ; i++)
	{
		vector< int > A;
		vector< int > B;

		for(int j = i*szBlock ; j < n && j/szBlock == i ; j++)
			if( j != 0 ) A.push_back( j + 1 );

		B.push_back( 1 );

		vector< int > cur = queryIntersection( A , B );

		for(int j = 0 ; j < cur.size() ; j++)
			valuesBlock[i][ cur[j]^ans[0] ] = 1;
	}

	for(int i = 0 ; i < szBlock ; i++)
	{
		vector< int > A;
		vector< int > B;

		for(int j = i ; j < n ; j += szBlock)
			if( j != 0 ) A.push_back( j + 1 );

		B.push_back( 1 );

		vector< int > cur = queryIntersection( A , B );

		for(int j = 0 ; j < cur.size() ; j++)
		{
			int curValue = cur[j]^ans[0];
			
			for(int t = 0 ; t <= qtdBlocks ; t++)
				if( valuesBlock[t][curValue] == 1 ) ans[ t*szBlock + i ] = curValue;
		}
	}

	return ans;
}

Compilation message

Xoractive.cpp: In function 'std::vector<int> queryIntersection(std::vector<int>, std::vector<int>)':
Xoractive.cpp:41:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0 ; i < a.size() ; i++)
                  ~~^~~~~~~~~~
Xoractive.cpp:46:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0 ; i < b.size() ; i++)
                  ~~^~~~~~~~~~
Xoractive.cpp:53:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j = 0 ; j < answerWith.size() ; j++)
                  ~~^~~~~~~~~~~~~~~~~~~
Xoractive.cpp: In function 'std::vector<int> guess(int)':
Xoractive.cpp:91:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = 0 ; j < cur.size() ; j++)
                   ~~^~~~~~~~~~~~
Xoractive.cpp:107:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j = 0 ; j < cur.size() ; j++)
                   ~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 4 ms 256 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Partially correct 5 ms 384 KB Output is partially correct
2 Partially correct 5 ms 384 KB Output is partially correct
3 Partially correct 5 ms 384 KB Output is partially correct
4 Partially correct 5 ms 384 KB Output is partially correct
5 Partially correct 5 ms 384 KB Output is partially correct
6 Partially correct 5 ms 384 KB Output is partially correct
7 Partially correct 5 ms 384 KB Output is partially correct
8 Partially correct 5 ms 384 KB Output is partially correct
9 Partially correct 5 ms 256 KB Output is partially correct
10 Partially correct 5 ms 384 KB Output is partially correct
11 Partially correct 5 ms 384 KB Output is partially correct
12 Partially correct 5 ms 384 KB Output is partially correct
13 Partially correct 5 ms 384 KB Output is partially correct
14 Partially correct 5 ms 384 KB Output is partially correct
15 Partially correct 5 ms 384 KB Output is partially correct
16 Partially correct 5 ms 384 KB Output is partially correct
17 Partially correct 5 ms 384 KB Output is partially correct
18 Partially correct 5 ms 384 KB Output is partially correct
19 Partially correct 5 ms 384 KB Output is partially correct
20 Partially correct 5 ms 384 KB Output is partially correct
21 Partially correct 5 ms 384 KB Output is partially correct
22 Partially correct 5 ms 384 KB Output is partially correct
23 Partially correct 5 ms 384 KB Output is partially correct
24 Partially correct 5 ms 384 KB Output is partially correct
25 Partially correct 5 ms 384 KB Output is partially correct
26 Partially correct 5 ms 384 KB Output is partially correct
27 Partially correct 5 ms 384 KB Output is partially correct
28 Partially correct 5 ms 384 KB Output is partially correct
29 Partially correct 5 ms 384 KB Output is partially correct
30 Partially correct 5 ms 384 KB Output is partially correct
31 Partially correct 5 ms 384 KB Output is partially correct
32 Partially correct 5 ms 384 KB Output is partially correct
33 Partially correct 5 ms 384 KB Output is partially correct
34 Partially correct 5 ms 384 KB Output is partially correct
35 Partially correct 5 ms 384 KB Output is partially correct
36 Partially correct 5 ms 384 KB Output is partially correct
37 Partially correct 5 ms 384 KB Output is partially correct
38 Partially correct 5 ms 384 KB Output is partially correct
39 Partially correct 5 ms 384 KB Output is partially correct
40 Partially correct 5 ms 384 KB Output is partially correct
41 Partially correct 5 ms 384 KB Output is partially correct
42 Partially correct 5 ms 384 KB Output is partially correct
43 Partially correct 5 ms 384 KB Output is partially correct
44 Partially correct 5 ms 384 KB Output is partially correct
45 Partially correct 5 ms 384 KB Output is partially correct
46 Partially correct 5 ms 384 KB Output is partially correct
47 Partially correct 5 ms 384 KB Output is partially correct
48 Partially correct 5 ms 384 KB Output is partially correct
49 Partially correct 5 ms 384 KB Output is partially correct
50 Partially correct 5 ms 384 KB Output is partially correct
51 Partially correct 5 ms 384 KB Output is partially correct
52 Partially correct 5 ms 384 KB Output is partially correct
53 Partially correct 5 ms 384 KB Output is partially correct
54 Partially correct 5 ms 384 KB Output is partially correct
55 Partially correct 5 ms 384 KB Output is partially correct
56 Partially correct 5 ms 384 KB Output is partially correct
57 Partially correct 5 ms 384 KB Output is partially correct
58 Partially correct 5 ms 384 KB Output is partially correct
59 Partially correct 5 ms 384 KB Output is partially correct
60 Partially correct 5 ms 384 KB Output is partially correct
61 Partially correct 5 ms 384 KB Output is partially correct
62 Partially correct 5 ms 384 KB Output is partially correct
63 Partially correct 5 ms 384 KB Output is partially correct
64 Partially correct 5 ms 384 KB Output is partially correct
65 Partially correct 5 ms 384 KB Output is partially correct
66 Partially correct 5 ms 384 KB Output is partially correct
67 Partially correct 5 ms 384 KB Output is partially correct
68 Partially correct 5 ms 384 KB Output is partially correct
69 Partially correct 5 ms 384 KB Output is partially correct
70 Partially correct 5 ms 384 KB Output is partially correct
71 Partially correct 5 ms 384 KB Output is partially correct
72 Partially correct 5 ms 384 KB Output is partially correct
73 Partially correct 6 ms 384 KB Output is partially correct
74 Partially correct 5 ms 384 KB Output is partially correct
75 Partially correct 5 ms 384 KB Output is partially correct
76 Partially correct 5 ms 384 KB Output is partially correct
77 Partially correct 5 ms 384 KB Output is partially correct
78 Partially correct 5 ms 384 KB Output is partially correct
79 Partially correct 5 ms 384 KB Output is partially correct
80 Partially correct 5 ms 384 KB Output is partially correct
81 Partially correct 5 ms 384 KB Output is partially correct
82 Partially correct 5 ms 384 KB Output is partially correct
83 Partially correct 5 ms 384 KB Output is partially correct
84 Partially correct 5 ms 384 KB Output is partially correct
85 Partially correct 5 ms 384 KB Output is partially correct
86 Partially correct 5 ms 384 KB Output is partially correct
87 Partially correct 5 ms 384 KB Output is partially correct
88 Partially correct 5 ms 384 KB Output is partially correct
89 Partially correct 5 ms 384 KB Output is partially correct
90 Partially correct 5 ms 384 KB Output is partially correct
91 Partially correct 5 ms 384 KB Output is partially correct
92 Partially correct 5 ms 384 KB Output is partially correct
93 Partially correct 5 ms 384 KB Output is partially correct
94 Partially correct 5 ms 384 KB Output is partially correct
95 Partially correct 5 ms 384 KB Output is partially correct
96 Partially correct 5 ms 384 KB Output is partially correct
97 Partially correct 5 ms 384 KB Output is partially correct
98 Partially correct 5 ms 384 KB Output is partially correct
99 Partially correct 5 ms 384 KB Output is partially correct
100 Partially correct 5 ms 384 KB Output is partially correct