Submission #553713

# Submission time Handle Problem Language Result Execution time Memory
553713 2022-04-26T16:31:53 Z amunduzbaev Super Dango Maker (JOI22_dango3) C++17
2 / 100
29 ms 844 KB
#include "dango3.h"
#ifndef EVAL
#include "grader.cpp"
#endif
#include "bits/stdc++.h"
using namespace std;

void Solve(int n, int m) {
	vector<int> a(n * m);
	iota(a.begin(), a.end(), 0);
	for(int i=m;i>0;i--){
		int cnt = 0;
		int j=n*i-1;
		vector<int> tmp;
		
		auto ask = [&](int j){
			vector<int> tt;
			for(int i=0;i<=j;i++) tt.push_back(a[i] + 1);
			for(auto x : tmp) tt.push_back(a[x] + 1);
			cnt++;
			return Query(tt);
		};
		while(~j){
			if(ask(j)){
				if(!j) { 
					tmp.push_back(j);
					break;
				}
				j = max(j - i, 0);
			} else {
				int l = j, r = min(j + i, tmp.empty() ? n * m : tmp.back() - 1);
				while(l < r){
					int m = (l + r) >> 1;
					if(ask(m)) r = m;
					else l = m + 1;
				}
				assert(l == r);
				tmp.push_back(l);
				j = max(l - i, 0);
			}
		}
		// cout<<cnt<<" "<<n * max(1., ceil(log(i)))<<" "<<2 * n<<"\n";
		assert(cnt <= n * max(1., ceil(log(i))) + 2 * n);
		auto give = [&](vector<int>& tt){
			reverse(tt.begin(), tt.end());
			/* for(auto x : tt) cout<<x<<" ";
			cout<<"\n";
			for(auto x : a) cout<<x<<" ";
			cout<<"\n"; */
			vector<int> tmp, qq;
			for(int j=0, l=0;j<n*i;j++){
				if(l<n && tt[l] == j) {
					qq.push_back(a[j] + 1);
					l++; 
					continue;
				}
				
				tmp.push_back(a[j]);
			}
			swap(tmp, a);
			Answer(qq);
			assert(qq.size() == n);
		};
		
		assert(tmp.size() == n);
		give(tmp);
	}
}

/*

3 2
3 3 1 2 1 2

*/

Compilation message

In file included from /usr/include/c++/10/cassert:44,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:33,
                 from dango3.cpp:5:
dango3.cpp: In lambda function:
dango3.cpp:62:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   62 |    assert(qq.size() == n);
      |           ~~~~~~~~~~^~~~
dango3.cpp: In function 'void Solve(int, int)':
dango3.cpp:65:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   65 |   assert(tmp.size() == n);
      |          ~~~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 1 ms 340 KB Output is correct
3 Correct 0 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Correct 0 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 6 ms 596 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 9 ms 716 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 29 ms 844 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -