Submission #950613

# Submission time Handle Problem Language Result Execution time Memory
950613 2024-03-20T13:42:22 Z pcc Minerals (JOI19_minerals) C++17
40 / 100
787 ms 5836 KB
#include "minerals.h"
#include <bits/stdc++.h>
using namespace std;

/*
int v = Query(1);
Answer(i, 2 * N + 1 - i);
*/

#define pii pair<int,int>
#define fs first
#define sc second
const int B = 15;
const int mxn = 86011;
vector<pii> req[B];
vector<int> v[2];
int pl,pr;
vector<vector<int>> bk[B];
vector<pii> ans;
int before[mxn];

void Solve(int N) {
	vector<int> vv;
	for(int i = 1;i<=N*2;i++)vv.push_back(i);
	mt19937 seed(time(NULL));
	shuffle(vv.begin(),vv.end(),seed);

	int pre = 0;
	for(auto &i:vv){
		int tmp = Query(i);
		if(tmp==pre){
			v[1].push_back(i);
			pre = Query(i);
		}
		else pre = tmp,v[0].push_back(i);
		before[i] = pre;
	}
	assert(v[0].size() == v[1].size());
	req[0].push_back(pii(0,N-1));
	bk[0].push_back({});
	for(int i = 0;i<v[1].size();i++)bk[0].back().push_back(v[1][i]);

	pl = 0,pr = v[0].size()-1;
	for(int i = 0;i<B;i++){
		int cnt = 0;
		if(req[i].empty())continue;
		while(pl>0){
			pre = Query(v[0][--pl]);
		}
		while(pr>0){
			pre = Query(v[0][pr--]);
		}
		cerr<<i<<endl;
		for(auto &j:req[i])cerr<<j.fs<<' '<<j.sc<<',';cerr<<endl;
		for(auto &j:bk[i]){for(auto &l:j)cerr<<l<<' ';cerr<<",";}cerr<<endl;
		assert(req[i].size() == bk[i].size());
		for(int j = 0;j<req[i].size();j++){
			auto [l,r] = req[i][j];
			if(l == r){
				ans.push_back(pii(bk[i][j][0],v[0][l]));
				continue;
			}
			int mid = (l+r)>>1;
			bk[i+1].push_back({});
			bk[i+1].push_back({});
			while(pr<mid){
				pre = Query(v[0][++pr]);
			}
			cerr<<pl<<','<<pr<<":"<<pre<<endl;
			req[i+1].push_back(pii(l,mid));
			req[i+1].push_back(pii(mid+1,r));
			for(auto &m:bk[i][j]){
				if(before[m]<=before[v[0][mid]]){
					bk[i+1].end()[-2].push_back(m);
					continue;
				}
				if(bk[i+1].end()[-2].size() == mid-l+1){
					bk[i+1].end()[-1].push_back(m);
					continue;
				}
				if(bk[i+1].end()[-1].size() == r-mid){
					bk[i+1].end()[-2].push_back(m);
					continue;
				}
				auto tmp = Query(m);
				if(pre == tmp)bk[i+1].end()[-2].push_back(m);
				else bk[i+1].end()[-1].push_back(m);
				pre = Query(m);
			}
		}
	}
	for(auto &i:ans)Answer(i.fs,i.sc);
	return;
}

Compilation message

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:41:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   41 |  for(int i = 0;i<v[1].size();i++)bk[0].back().push_back(v[1][i]);
      |                ~^~~~~~~~~~~~
minerals.cpp:54:3: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   54 |   for(auto &j:req[i])cerr<<j.fs<<' '<<j.sc<<',';cerr<<endl;
      |   ^~~
minerals.cpp:54:49: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   54 |   for(auto &j:req[i])cerr<<j.fs<<' '<<j.sc<<',';cerr<<endl;
      |                                                 ^~~~
minerals.cpp:57:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |   for(int j = 0;j<req[i].size();j++){
      |                 ~^~~~~~~~~~~~~~
minerals.cpp:77:33: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   77 |     if(bk[i+1].end()[-2].size() == mid-l+1){
      |        ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
minerals.cpp:81:33: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'std::tuple_element<1, std::pair<int, int> >::type' {aka 'int'} [-Wsign-compare]
   81 |     if(bk[i+1].end()[-1].size() == r-mid){
      |        ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
minerals.cpp:45:7: warning: unused variable 'cnt' [-Wunused-variable]
   45 |   int cnt = 0;
      |       ^~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 6 ms 480 KB Output is correct
4 Correct 4 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 43 ms 616 KB Output is correct
2 Correct 86 ms 948 KB Output is correct
3 Correct 182 ms 1616 KB Output is correct
4 Correct 419 ms 3012 KB Output is correct
5 Correct 787 ms 5664 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 6 ms 480 KB Output is correct
4 Correct 4 ms 344 KB Output is correct
5 Correct 43 ms 616 KB Output is correct
6 Correct 86 ms 948 KB Output is correct
7 Correct 182 ms 1616 KB Output is correct
8 Correct 419 ms 3012 KB Output is correct
9 Correct 787 ms 5664 KB Output is correct
10 Correct 42 ms 600 KB Output is correct
11 Correct 488 ms 4176 KB Output is correct
12 Correct 774 ms 5720 KB Output is correct
13 Correct 741 ms 5728 KB Output is correct
14 Correct 773 ms 5836 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 6 ms 480 KB Output is correct
4 Correct 4 ms 344 KB Output is correct
5 Correct 43 ms 616 KB Output is correct
6 Correct 86 ms 948 KB Output is correct
7 Correct 182 ms 1616 KB Output is correct
8 Correct 419 ms 3012 KB Output is correct
9 Correct 787 ms 5664 KB Output is correct
10 Correct 42 ms 600 KB Output is correct
11 Correct 488 ms 4176 KB Output is correct
12 Correct 774 ms 5720 KB Output is correct
13 Correct 741 ms 5728 KB Output is correct
14 Correct 773 ms 5836 KB Output is correct
15 Incorrect 596 ms 5384 KB Wrong Answer [2]
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 6 ms 480 KB Output is correct
4 Correct 4 ms 344 KB Output is correct
5 Correct 43 ms 616 KB Output is correct
6 Correct 86 ms 948 KB Output is correct
7 Correct 182 ms 1616 KB Output is correct
8 Correct 419 ms 3012 KB Output is correct
9 Correct 787 ms 5664 KB Output is correct
10 Correct 42 ms 600 KB Output is correct
11 Correct 488 ms 4176 KB Output is correct
12 Correct 774 ms 5720 KB Output is correct
13 Correct 741 ms 5728 KB Output is correct
14 Correct 773 ms 5836 KB Output is correct
15 Incorrect 596 ms 5384 KB Wrong Answer [2]
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 6 ms 480 KB Output is correct
4 Correct 4 ms 344 KB Output is correct
5 Correct 43 ms 616 KB Output is correct
6 Correct 86 ms 948 KB Output is correct
7 Correct 182 ms 1616 KB Output is correct
8 Correct 419 ms 3012 KB Output is correct
9 Correct 787 ms 5664 KB Output is correct
10 Correct 42 ms 600 KB Output is correct
11 Correct 488 ms 4176 KB Output is correct
12 Correct 774 ms 5720 KB Output is correct
13 Correct 741 ms 5728 KB Output is correct
14 Correct 773 ms 5836 KB Output is correct
15 Incorrect 596 ms 5384 KB Wrong Answer [2]
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 6 ms 480 KB Output is correct
4 Correct 4 ms 344 KB Output is correct
5 Correct 43 ms 616 KB Output is correct
6 Correct 86 ms 948 KB Output is correct
7 Correct 182 ms 1616 KB Output is correct
8 Correct 419 ms 3012 KB Output is correct
9 Correct 787 ms 5664 KB Output is correct
10 Correct 42 ms 600 KB Output is correct
11 Correct 488 ms 4176 KB Output is correct
12 Correct 774 ms 5720 KB Output is correct
13 Correct 741 ms 5728 KB Output is correct
14 Correct 773 ms 5836 KB Output is correct
15 Incorrect 596 ms 5384 KB Wrong Answer [2]
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 6 ms 480 KB Output is correct
4 Correct 4 ms 344 KB Output is correct
5 Correct 43 ms 616 KB Output is correct
6 Correct 86 ms 948 KB Output is correct
7 Correct 182 ms 1616 KB Output is correct
8 Correct 419 ms 3012 KB Output is correct
9 Correct 787 ms 5664 KB Output is correct
10 Correct 42 ms 600 KB Output is correct
11 Correct 488 ms 4176 KB Output is correct
12 Correct 774 ms 5720 KB Output is correct
13 Correct 741 ms 5728 KB Output is correct
14 Correct 773 ms 5836 KB Output is correct
15 Incorrect 596 ms 5384 KB Wrong Answer [2]
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 344 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 6 ms 480 KB Output is correct
4 Correct 4 ms 344 KB Output is correct
5 Correct 43 ms 616 KB Output is correct
6 Correct 86 ms 948 KB Output is correct
7 Correct 182 ms 1616 KB Output is correct
8 Correct 419 ms 3012 KB Output is correct
9 Correct 787 ms 5664 KB Output is correct
10 Correct 42 ms 600 KB Output is correct
11 Correct 488 ms 4176 KB Output is correct
12 Correct 774 ms 5720 KB Output is correct
13 Correct 741 ms 5728 KB Output is correct
14 Correct 773 ms 5836 KB Output is correct
15 Incorrect 596 ms 5384 KB Wrong Answer [2]
16 Halted 0 ms 0 KB -