Submission #641068

# Submission time Handle Problem Language Result Execution time Memory
641068 2022-09-15T22:59:50 Z ymm Carnival (CEOI14_carnival) C++17
0 / 100
5 ms 464 KB
#include <bits/stdc++.h>
#define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
#define LoopR(x,l,r) for (ll x = (r)-1; x >= (l); --x)
typedef long long ll;
typedef std::pair<int, int> pii;
typedef std::pair<ll , ll > pll;
using namespace std;

const int N = 160;
int ans[N];
int n;

int ask(vector<int> v)
{
	printf("%d ", v.size());
	for (int x : v)
		printf("%d ", x+1);
	printf("\n");
	fflush(stdout);
	int ans;
	scanf("%d", &ans);
	return ans;
}

void solve(vector<int> v)
{
	int len = v.size();
	if (len == 1)
		return;
	solve(vector<int>(v.begin(), v.begin() + len/2));
	solve(vector<int>(v.begin() + len/2, v.end()));
	vector<vector<int>> cl, cr;
	Loop (i,0,len/2) {
		while (ans[v[i]] >= cl.size())
			cl.emplace_back();
		cl[ans[v[i]]].push_back(v[i]);
	}
	Loop (i,len/2,len) {
		while (ans[v[i]] >= cr.size())
			cr.emplace_back();
		cr[ans[v[i]]].push_back(v[i]);
		ans[v[i]] += cl.size();
	}
	Loop (i,0,cl.size())
		assert(cl[i].size());
	Loop (i,0,cr.size())
		assert(cr[i].size());
	vector<int> rem;
	Loop (i,0,cl.size()) {
		int l = 0, r = cr.size();
		while (l < r) {
			int m = (l + r + 1)/2;
			vector<int> vec;
			vec.push_back(cl[i][0]);
			Loop (j,l,m) vec.push_back(cr[j][0]);
			if (ask(vec) != vec.size())
				r = m-1;
			else
				l = m;
		}
		if (l < cr.size()) {
			for (int x : cr[l])
				ans[x] = i;
			rem.push_back(l + cl.size());
		}
	}
	for (int x : v) {
		ans[x] -= lower_bound(rem.begin(), rem.end(), ans[x]) - rem.begin();
	}
}

int main()
{
	ios::sync_with_stdio(false);
	cin >> n;
	vector<int> vec(n);
	iota(vec.begin(), vec.end(), 0);
	solve(vec);
	printf("0 ");
	Loop (i,0,n)
		printf("%d ", ans[i]+1);
	printf("\n");
}

Compilation message

carnival.cpp: In function 'int ask(std::vector<int>)':
carnival.cpp:15:11: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wformat=]
   15 |  printf("%d ", v.size());
      |          ~^    ~~~~~~~~
      |           |          |
      |           int        std::vector<int>::size_type {aka long unsigned int}
      |          %ld
carnival.cpp: In function 'void solve(std::vector<int>)':
carnival.cpp:34:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |   while (ans[v[i]] >= cl.size())
      |          ~~~~~~~~~~^~~~~~~~~~~~
carnival.cpp:39:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   39 |   while (ans[v[i]] >= cr.size())
      |          ~~~~~~~~~~^~~~~~~~~~~~
carnival.cpp:2:40: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    2 | #define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
      |                                        ^
carnival.cpp:44:2: note: in expansion of macro 'Loop'
   44 |  Loop (i,0,cl.size())
      |  ^~~~
carnival.cpp:2:40: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    2 | #define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
      |                                        ^
carnival.cpp:46:2: note: in expansion of macro 'Loop'
   46 |  Loop (i,0,cr.size())
      |  ^~~~
carnival.cpp:2:40: warning: comparison of integer expressions of different signedness: 'll' {aka 'long long int'} and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    2 | #define Loop(x,l,r) for (ll x = (l); x < (r); ++x)
      |                                        ^
carnival.cpp:49:2: note: in expansion of macro 'Loop'
   49 |  Loop (i,0,cl.size()) {
      |  ^~~~
carnival.cpp:56:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |    if (ask(vec) != vec.size())
      |        ~~~~~~~~~^~~~~~~~~~~~~
carnival.cpp:61:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |   if (l < cr.size()) {
      |       ~~^~~~~~~~~~~
carnival.cpp: In function 'int ask(std::vector<int>)':
carnival.cpp:21:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |  scanf("%d", &ans);
      |  ~~~~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Runtime error 3 ms 452 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 2 ms 464 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 320 KB Output is correct
2 Runtime error 2 ms 452 KB Execution killed with signal 6
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 5 ms 460 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 208 KB Output is correct
2 Runtime error 4 ms 456 KB Execution killed with signal 6
3 Halted 0 ms 0 KB -