Submission #254481

#TimeUsernameProblemLanguageResultExecution timeMemory
254481MrRobot_28Drvca (COCI19_drvca)C++17
0 / 110
89 ms3952 KiB
#include <bits/stdc++.h>
                  
using namespace std;
int n;
vector <bool> used;
vector <int> a;
void funct1()
{
	int diff = a[1] - a[0];
	vector <int> vec1;
	used[0] = 1;
	vec1.push_back(a[0]);
	for(int j = 1; j < n / 2; j++)
	{
		int it = lower_bound(a.begin(), a.end(), vec1.back() + diff) - a.begin();
		if(it != a.size() && a[it] == vec1.back() + diff)
		{
			vec1.push_back(a[it]);
			used[it] = 1;
		}
		else
		{
			return;
		}
	}
	vector <int> vec2;
	for(int j = 0; j < n; j++)
	{
		if(!used[j])
		{
			vec2.push_back(a[j]);
		}
	}
	for(int j = 1; j < n / 2 - 1; j++)
	{
		if(vec2[j] - vec2[j - 1] != vec2[j + 1] - vec2[j])
		{
			return;
		}
	}
	cout << vec1.size() << "\n";
	for(int i = 0; i < vec1.size(); i++)
	{
		cout << vec1[i] << " ";
	}
	cout << "\n";
	cout << vec2.size() << "\n";
	for(int i = 0; i < vec2.size(); i++)
	{
		cout << vec2[i] << " ";
	}
	exit(0);
}
void funct2()
{
	int diff = a[2] - a[0];
	vector <int> vec1;
	used[0] = 1;
	vec1.push_back(a[0]);
	for(int j = 1; j < n / 2; j++)
	{
		int it = lower_bound(a.begin(), a.end(), vec1.back() + diff) - a.begin();
		if(it != a.size() && a[it] == vec1.back() + diff)
		{
			vec1.push_back(a[it]);
			used[it] = 1;
		}
		else
		{
			return;
		}
	}
	vector <int> vec2;
	for(int j = 0; j < n; j++)
	{
		if(!used[j])
		{
			vec2.push_back(a[j]);
		}
	}
	for(int j = 1; j < n / 2 - 1; j++)
	{
		if(vec2[j] - vec2[j - 1] != vec2[j + 1] - vec2[j])
		{
			return;
		}
	}
	cout << vec1.size() << "\n";
	for(int i = 0; i < vec1.size(); i++)
	{
		cout << vec1[i] << " ";
	}
	cout << "\n";
	cout << vec2.size() << "\n";
	for(int i = 0; i < vec2.size(); i++)
	{
		cout << vec2[i] << " ";
	}
	exit(0);
}
void funct3()
{
	int diff = a[2] - a[1];
	vector <int> vec1;
	used[0] = 1;
	vec1.push_back(a[1]);
	for(int j = 1; j < n / 2; j++)
	{
		int it = lower_bound(a.begin(), a.end(), vec1.back() + diff) - a.begin();
		if(it != a.size() && a[it] == vec1.back() + diff)
		{
			vec1.push_back(a[it]);
			used[it] = 1;
		}
		else
		{
			return;
		}
	}
	vector <int> vec2;
	for(int j = 0; j < n; j++)
	{
		if(!used[j])
		{
			vec2.push_back(a[j]);
		}
	}
	for(int j = 1; j < n / 2 - 1; j++)
	{
		if(vec2[j] - vec2[j - 1] != vec2[j + 1] - vec2[j])
		{
			return;
		}
	}
	cout << vec1.size() << "\n";
	for(int i = 0; i < vec1.size(); i++)
	{
		cout << vec1[i] << " ";
	}
	cout << "\n";
	cout << vec2.size() << "\n";
	for(int i = 0; i < vec2.size(); i++)
	{
		cout << vec2[i] << " ";
	}
	exit(0);
}
signed main(){
//	ios_base::sync_with_stdio(false);
//	cin.tie(NULL);
//	cout.tie(NULL);
	cin >> n;
	a.resize(n);
	used.resize(n);
	for(int i = 0; i < n; i++)
	{
		cin >> a[i];
	}
	sort(a.begin(), a.end());
	funct1();
	for(int i = 0; i < n; i++)
	{
		used[i] = 0;
	}
	funct2();
	for(int i = 0; i < n; i++)
	{
		used[i] = 0;
	}
	funct3();
	cout << -1;
	return 0;
}

Compilation message (stderr)

drvca.cpp: In function 'void funct1()':
drvca.cpp:16:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(it != a.size() && a[it] == vec1.back() + diff)
      ~~~^~~~~~~~~~~
drvca.cpp:42:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vec1.size(); i++)
                 ~~^~~~~~~~~~~~~
drvca.cpp:48:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vec2.size(); i++)
                 ~~^~~~~~~~~~~~~
drvca.cpp: In function 'void funct2()':
drvca.cpp:63:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(it != a.size() && a[it] == vec1.back() + diff)
      ~~~^~~~~~~~~~~
drvca.cpp:89:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vec1.size(); i++)
                 ~~^~~~~~~~~~~~~
drvca.cpp:95:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vec2.size(); i++)
                 ~~^~~~~~~~~~~~~
drvca.cpp: In function 'void funct3()':
drvca.cpp:110:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(it != a.size() && a[it] == vec1.back() + diff)
      ~~~^~~~~~~~~~~
drvca.cpp:136:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vec1.size(); i++)
                 ~~^~~~~~~~~~~~~
drvca.cpp:142:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0; i < vec2.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...