Submission #97836

#TimeUsernameProblemLanguageResultExecution timeMemory
97836KLPPICC (CEOI16_icc)C++14
0 / 100
394 ms632 KiB
#include<bits/stdc++.h>
#include "icc.h"
using namespace std;
typedef long long int lld;
set<pair<int,int> >S;
int arr1[1000];
int arr2[1000];
int q(vector<int> a, vector<int> b){
	for(int i=0;i<a.size();i++)arr1[i]=a[i];
	for(int i=0;i<b.size();i++)arr2[i]=b[i];
	return query(a.size(),b.size(),arr1,arr2);
}
vector<vector<int> > CC;
pair<int,int> discover_edge(vector<int> a, vector<int> b){
	if(a.size()==1 && b.size()==1)return pair<int,int>(a[0],b[0]);
	if(a.size()<b.size())swap(a,b);
	vector<int> mid;
	int M=a.size()/2;
	for(int i=0;i<M;i++)mid.push_back(a[i]);
	if(q(mid,b)){
		return discover_edge(mid,b);
	}
	mid.clear();
	for(int i=M;i<a.size();i++)mid.push_back(a[i]);
	return discover_edge(mid,b);
}
int test_components(int a, int b){
	return q(CC[a],CC[b]);
}
void merge_components(int a, int b){
	if(a<b)swap(a,b);
	vector<int> v1;
	for(int i=0;i<CC[a].size();i++)v1.push_back(CC[a][i]);
	for(int i=0;i<CC[b].size();i++)v1.push_back(CC[b][i]);
	CC.erase(CC.begin()+a);
	CC.erase(CC.begin()+b);
	CC.push_back(v1);
}
void run(int N){
	if(CC.size()==0){
		for(int i=1;i<=N;i++){
			vector<int> v;
			v.push_back(i);
			CC.push_back(v);
		}
	}
	/*for(int i=0;i<CC.size();i++){
		for(int j=0;j<CC[i].size();j++)cout<<CC[i][j]<<" ";
		cout<<endl;
	}*/
	for(int i=0;i<CC.size();i++){
		for(int j=i+1;j<CC.size();j++){
			if(test_components(i,j)){
				pair<int,int> p=discover_edge(CC[i],CC[j]);
				merge_components(i,j);
				setRoad(p.first,p.second);
				return;
			}
		}
	}
	
	
}

Compilation message (stderr)

icc.cpp: In function 'int q(std::vector<int>, std::vector<int>)':
icc.cpp:9:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<a.size();i++)arr1[i]=a[i];
              ~^~~~~~~~~
icc.cpp:10:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<b.size();i++)arr2[i]=b[i];
              ~^~~~~~~~~
icc.cpp: In function 'std::pair<int, int> discover_edge(std::vector<int>, std::vector<int>)':
icc.cpp:24:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=M;i<a.size();i++)mid.push_back(a[i]);
              ~^~~~~~~~~
icc.cpp: In function 'void merge_components(int, int)':
icc.cpp:33:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<CC[a].size();i++)v1.push_back(CC[a][i]);
              ~^~~~~~~~~~~~~
icc.cpp:34:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<CC[b].size();i++)v1.push_back(CC[b][i]);
              ~^~~~~~~~~~~~~
icc.cpp: In function 'void run(int)':
icc.cpp:51:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i=0;i<CC.size();i++){
              ~^~~~~~~~~~
icc.cpp:52:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j=i+1;j<CC.size();j++){
                 ~^~~~~~~~~~
#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...