제출 #620484

#제출 시각아이디문제언어결과실행 시간메모리
620484kshitij_sodaniMinerals (JOI19_minerals)C++14
70 / 100
75 ms5092 KiB
//#pragma GCC optimize("Ofast,unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long llo;
#define mp make_pair
#define pb push_back
#define a first 
#define b second
#define endl '\n'
 
#include "minerals.h"
vector<pair<int,int>> ans;
int cur=0;
set<int> xx;

void solve(vector<int> aa,vector<int> bb,int y=0){
	/*for(auto j:aa){
		cout<<j<<".";
	}
	cout<<endl;
	for(auto j:bb){
		cout<<j<<".";
	}
	cout<<endl;*/
	if(aa.size()==1){
		//cout<<aa[0]<<":"<<bb[0]<<endl;
		ans.pb({aa[0],bb[0]});
		return;
	}
	//int cur=0;
	vector<int> cc;
	vector<int> dd;
	vector<int> ee;
	vector<int> ff;
	for(int i=0;i<aa.size();i++){
		if(i*2>=aa.size()){
			dd.pb(aa[i]);
			continue;
		}
		cur=Query(aa[i]);
		xx.insert(aa[i]);
		cc.pb(aa[i]);
	}
	for(int i=0;i<bb.size();i++){
		int cur2=Query(bb[i]);
	/*	if(bb.size()==4){
			cout<<cur<<","<<cur2<<","<<bb[i]<<endl;
		}*/	
		if(y==0 and cur2==cur){
			ee.pb(bb[i]);
			continue;
		}
		else if(y==1 and cur2!=cur){
			cur=cur2;
			ee.pb(bb[i]);
			continue;
		}
		//Query(bb[i]);
		cur=cur2;
		ff.pb(bb[i]);
	}
	/*for(auto j:cc){
		cur=Query(j);
	}*/
	/*for(auto j:cc){
		cout<<j<<",";
	}
	cout<<endl;
	for(auto j:ee){
		cout<<j<<",";
	}
	cout<<endl<<endl;;*/
	solve(cc,ee,y^1);
	solve(dd,ff,y);
}
void Solve(int n) {
	vector<int> aa;
	vector<int> bb;
	int cur5=0;
	for(int i=1;i<=2*n;i++){
		int cur2=Query(i);
		if(cur2>cur5){
			aa.pb(i);
			cur5=cur2;
			continue;
		}
		bb.pb(i);
		Query(i);
	}
/*	for(auto j:aa){
		Query(j);
	}
*/ 
	solve(aa,bb,1);
 
  	for (int i=0; i<n;i++) {
    	Answer(ans[i].a,ans[i].b);
  	}
}

컴파일 시 표준 에러 (stderr) 메시지

minerals.cpp: In function 'void solve(std::vector<int>, std::vector<int>, int)':
minerals.cpp:35:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |  for(int i=0;i<aa.size();i++){
      |              ~^~~~~~~~~~
minerals.cpp:36:9: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |   if(i*2>=aa.size()){
      |      ~~~^~~~~~~~~~~
minerals.cpp:44:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |  for(int i=0;i<bb.size();i++){
      |              ~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...