Submission #553700

# Submission time Handle Problem Language Result Execution time Memory
553700 2022-04-26T16:14:46 Z amunduzbaev Super Dango Maker (JOI22_dango3) C++17
0 / 100
35 ms 548 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 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);
			
			return Query(tt);
		};
		while(j >= 0){
			if(ask(j)){
				if(!j) { 
					tmp.push_back(j);
					break;
				}
				j = max(j - i, 0);
			} else {
				int l = j, r = j + i;
				while(l < r){
					int m = (l + r) >> 1;
					if(ask(m)) r = m;
					else l = m + 1;
				}
				tmp.push_back(l);
				j = l - 1;
			}
		}
		
		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:59:21: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   59 |    assert(qq.size() == n);
      |           ~~~~~~~~~~^~~~
dango3.cpp: In function 'void Solve(int, int)':
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(tmp.size() == n);
      |          ~~~~~~~~~~~^~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 340 KB Output is correct
2 Incorrect 1 ms 300 KB Wrong Answer [2]
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 2 ms 300 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 10 ms 468 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 35 ms 548 KB Wrong Answer [2]
2 Halted 0 ms 0 KB -