# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
765724 | 1075508020060209tc | Drvca (COCI19_drvca) | C++14 | 43 ms | 4896 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define X first
#define Y second
int n;
int ar[200005];
int tar[200005];
int sfok[200005];
int chk(vector<int>A){
for(int i=1;i<A.size();i++){
// cout<<A[i]-A[i-1]<<endl;
if((A[i]-A[i-1])!=(A[1]-A[0]) ){
return 0;
}
}
return 1;
}
vector<int>A;vector<int>B;int bok;
void fot(int spl){
// cout<<"ft";
for(int i=spl;i<=n;i++){
B.push_back(i);
}
if(B.size()==0){
B.push_back(n);
A.pop_back();
}
cout<<A.size()<<endl;
for(int i=0;i<A.size();i++){
cout<<ar[A[i]]<<" ";
}cout<<endl;
cout<<B.size()<<endl;
for(int i=0;i<B.size();i++){
cout<<ar[B[i]]<<" ";
}
exit(0);
}
void ot(){
if(bok==0){return;}
//cout<<"tyu";
int lstpl=A[A.size()-1];
if(lstpl==n){fot(n+1);}
if(lstpl==n-1){
if(B.size()==0){
fot(n);
}
if(B.size()==1){
fot(n);
}
if(B.size()>=2){
if(ar[B[1]]-ar[B[0]]==ar[n]-ar[B[B.size()-1]]){
fot(n);
}else{
return;
}
}
return;
}
if(sfok[lstpl+1]==0){return;}
if(B.size()==0){
fot(lstpl+1);
return;
}
if(B.size()==1){
if(ar[lstpl+1]-ar[B[0]]==ar[n]-ar[n-1]){
fot(lstpl+1);
}
return;
}
if(ar[lstpl+1]-ar[B[B.size()-1]]==ar[n]-ar[n-1]&&ar[B[1]]-ar[B[0]]==ar[n]-ar[n-1]){
fot(lstpl+1);
}
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>ar[i];
}
if(n==2){
cout<<"1\n";
cout<<ar[1]<<endl;
cout<<"1\n";
cout<<ar[2]<<endl;return 0;
}
sort(ar+1,ar+n+1);
sfok[n]=1;
for(int i=n-1;i>=1;i--){
if(ar[i]-ar[i+1]!=ar[n-1]-ar[n]){
break;
}
sfok[i]=1;
}
A.clear();B.clear();bok=1;
A.push_back(1);
A.push_back(2);
//cout<<"hehe";
ot();
for(int i=3;i<=n;i++){
//cout<<i<<" ";
if(ar[i]-ar[A[A.size()-1]]==ar[2]-ar[1]){
A.push_back(i);
ot();
}else{
if(B.size()<=1){
B.push_back(i);
continue;
}
if(ar[i]-ar[B.back()]!=ar[B[1]]-ar[B[0]]){
bok=0;
}
B.push_back(i);
}
}
//cout<<"hihi";
A.clear();B.clear();bok=1;
A.push_back(1);
A.push_back(3);
B.push_back(2);
ot();
for(int i=4;i<=n;i++){
if(ar[i]-ar[A[A.size()-1]]==ar[3]-ar[1]){
A.push_back(i);
ot();
}else{
if(B.size()==1){
B.push_back(i);
continue;
}
if(ar[i]-ar[B.back()]!=ar[B[1]]-ar[B[0]]){
bok=0;
}
B.push_back(i);
}
}
A.clear();B.clear();bok=1;
B.push_back(1);
A.push_back(2);
A.push_back(3);
ot();
for(int i=4;i<=n;i++){
if(ar[i]-ar[A[A.size()-1]]==ar[3]-ar[2]){
A.push_back(i);
ot();
}else{
if(B.size()==1){
B.push_back(i);
continue;
}
if(ar[i]-ar[B.back()]!=ar[B[1]]-ar[B[0]]){
bok=0;
}
B.push_back(i);
}
}
cout<<-1<<endl;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |