Submission #685283

#TimeUsernameProblemLanguageResultExecution timeMemory
685283grossly_overconfidentCounting Mushrooms (IOI20_mushrooms)C++17
Compilation error
0 ms0 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> decipher(int a, int b, int c) {
	vector<int> m = { a, 0, b, c };
	int c1 = use_machine(m);
	if (c1 == 0) {
		m = { 0, 0, 0 };
		return m;
	}
	if (c1 == 3) {
		m = { 1, 1, 0 };
		return m;
	}
	if (c1 == 2) {
		m = { b, a, 0, c };
		c1 = use_machine(m);
		if (c1 == 1) {
			m = { 0, 1, 0 };
		}
		else if (c1 == 3) {
			m = { 1, 0, 1 };
		}
		else if (c1 == 2) {
			m = { 1, 1, 1 };
		}
		return m;
	}
	m = { b, 0, c };
	c1 = use_machine(m);
	if (c1 == 0) {
		m = { 1, 0, 0 };
	}
	else if (c1 == 1) {
		m = { 0, 0, 1 };
	}
	else if (c1 == 2) {
		m = { 0, 1, 1 };
	}
	return m;
}

int count_mushrooms(int n) {
	vector<int> a, b;
	a.push_back(0);
	if (n < 220) {
		for (int i = 1; i < n; ++i) {
			if (use_machine({ i, 0 }) == 0) {
				a.push_back(i);
			}
		}
		return a.size();
	}
	for (int i = 1; i < 115; i += 3) { 
		vector<int> take = decipher(i, i + 1, i + 2);
		if (take[0] == 1) {
			b.push_back(i);
		}
		else {
			a.push_back(i);
		}
		if (take[1] == 1) {
			b.push_back(i + 1);
		}
		else {
			a.push_back(i + 1);
		}
		if (take[2] == 1) {
			b.push_back(i + 2);
		}
		else {
			a.push_back(i + 2);
		}
	}// first 114 deciphered

	int a = 0;
	if (a.size() > b.size()) {
		for (int i = 115; i < n; i += a.size() - 1) {
			vector<int> pass;
			pass.push_back(a[0]);
			for (int j = 0; j > min(a.size() - 1, n - i); ++j) {
				pass.push_back(i + j);
				pass.push_back(a[j + 1]);
			}
			a += (a.size() - 1) - (use_machine(pass) / 2);
		}
		return a;
	}
	for (int i = 115; i < n; i += a.size() - 1) {
		vector<int> pass;
		pass.push_back(b[0]);
		for (int j = 0; j > min(b.size() - 1, n - i); ++j) {
			pass.push_back(i + j);
			pass.push_back(b[j + 1]);
		}
		a += use_machine(pass) / 2;
	}
	return a;
}

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:77:6: error: conflicting declaration 'int a'
   77 |  int a = 0;
      |      ^
mushrooms.cpp:45:14: note: previous declaration as 'std::vector<int> a'
   45 |  vector<int> a, b;
      |              ^
mushrooms.cpp:82:47: error: no matching function for call to 'min(std::vector<int>::size_type, int)'
   82 |    for (int j = 0; j > min(a.size() - 1, n - i); ++j) {
      |                                               ^
In file included from /usr/include/c++/10/vector:60,
                 from mushrooms.h:1,
                 from mushrooms.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:82:47: note:   deduced conflicting types for parameter 'const _Tp' ('long unsigned int' and 'int')
   82 |    for (int j = 0; j > min(a.size() - 1, n - i); ++j) {
      |                                               ^
In file included from /usr/include/c++/10/vector:60,
                 from mushrooms.h:1,
                 from mushrooms.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:82:47: note:   deduced conflicting types for parameter 'const _Tp' ('long unsigned int' and 'int')
   82 |    for (int j = 0; j > min(a.size() - 1, n - i); ++j) {
      |                                               ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from mushrooms.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:82:47: note:   mismatched types 'std::initializer_list<_Tp>' and 'long unsigned int'
   82 |    for (int j = 0; j > min(a.size() - 1, n - i); ++j) {
      |                                               ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from mushrooms.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:82:47: note:   mismatched types 'std::initializer_list<_Tp>' and 'long unsigned int'
   82 |    for (int j = 0; j > min(a.size() - 1, n - i); ++j) {
      |                                               ^
mushrooms.cpp:86:6: error: no match for 'operator+=' (operand types are 'std::vector<int>' and 'std::vector<int>::size_type' {aka 'long unsigned int'})
   86 |    a += (a.size() - 1) - (use_machine(pass) / 2);
      |    ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mushrooms.cpp:88:10: error: cannot convert 'std::vector<int>' to 'int' in return
   88 |   return a;
      |          ^
mushrooms.cpp:93:46: error: no matching function for call to 'min(std::vector<int>::size_type, int)'
   93 |   for (int j = 0; j > min(b.size() - 1, n - i); ++j) {
      |                                              ^
In file included from /usr/include/c++/10/vector:60,
                 from mushrooms.h:1,
                 from mushrooms.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:230:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::min(const _Tp&, const _Tp&)'
  230 |     min(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:230:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:93:46: note:   deduced conflicting types for parameter 'const _Tp' ('long unsigned int' and 'int')
   93 |   for (int j = 0; j > min(b.size() - 1, n - i); ++j) {
      |                                              ^
In file included from /usr/include/c++/10/vector:60,
                 from mushrooms.h:1,
                 from mushrooms.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:278:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::min(const _Tp&, const _Tp&, _Compare)'
  278 |     min(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:278:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:93:46: note:   deduced conflicting types for parameter 'const _Tp' ('long unsigned int' and 'int')
   93 |   for (int j = 0; j > min(b.size() - 1, n - i); ++j) {
      |                                              ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from mushrooms.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3468:5: note: candidate: 'template<class _Tp> constexpr _Tp std::min(std::initializer_list<_Tp>)'
 3468 |     min(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3468:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:93:46: note:   mismatched types 'std::initializer_list<_Tp>' and 'long unsigned int'
   93 |   for (int j = 0; j > min(b.size() - 1, n - i); ++j) {
      |                                              ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from mushrooms.cpp:2:
/usr/include/c++/10/bits/stl_algo.h:3474:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::min(std::initializer_list<_Tp>, _Compare)'
 3474 |     min(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3474:5: note:   template argument deduction/substitution failed:
mushrooms.cpp:93:46: note:   mismatched types 'std::initializer_list<_Tp>' and 'long unsigned int'
   93 |   for (int j = 0; j > min(b.size() - 1, n - i); ++j) {
      |                                              ^
mushrooms.cpp:97:5: error: no match for 'operator+=' (operand types are 'std::vector<int>' and 'int')
   97 |   a += use_machine(pass) / 2;
      |   ~~^~~~~~~~~~~~~~~~~~~~~~~~
mushrooms.cpp:99:9: error: cannot convert 'std::vector<int>' to 'int' in return
   99 |  return a;
      |         ^