# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
125352 | figter001 | 고속도로 설계 (CEOI12_highway) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
// #include "office.h"
using namespace std;
bool vis[11][11][11];
int l1,l2;
int l1j[12],l2j[12];
int GetN(){
return l1+l2;
}
int isOnLine(int a,int b,int c){
int can = 0;
for(int i=0;i<l1;i++){
if(a == l1j[i])can++;
if(b == l1j[i])can++;
if(c == l1j[i])can++;
}
if(can == 3)return 1;
can = 0;
for(int i=0;i<l2;i++){
if(a == l2j[i])can++;
if(b == l2j[i])can++;
if(c == l2j[i])can++;
}
if(can == 3)return 1;
return 0;
}
void Answer(int a,int b,int c,int d){
cout << a << ' ' << b << ' ' << c << ' ' << d << endl;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("input.txt","r",stdin);
#endif
cin>>l1;
for(int i=0;i<l1;i++)cin>>l1j[i];
cin>>l2;
for(int i=0;i<l2;i++)cin>>l2j[i];
int n = GetN();
int res;
int a,b,c;
for(int i=1;i<=n;i++){
a = i;
b = i+1;
c = i+2;
res = isOnLine(a,b,c);
if(res == 0)break;
}
int lst = -1;
int g = 0;
for(int i=c+1;i<=n;i++){
res = isOnLine(a,b,i);
if(res == 1){
g = c;
c = i;
break;
}
res = isOnLine(a,i,c);
if(res == 1){
g = b;
b = i;
swap(c,b);
break;
}
res = isOnLine(i,b,c);
if(res == 1){
g = a;
a = i;
swap(c,a);
break;
}
if(lst == -1)lst = i;
else{
pair<int,int> q;
res = isOnLine(i,lst,a);
if(res == 1)q = {b,c};
res = isOnLine(i,lst,b);
if(res == 1)q = {a,c};
res = isOnLine(i,lst,c);
if(res == 1)q = {a,b};
Answer(lst,i,q.first,q.second);
return 0;
}
}
int x,y;
for(int i=c+1;i<=n;i+=2){
x = i;
y = i+1;
res = isOnLine(a,x,y);
if(res == 0){
break;
}
}
cout << x << ' ' << y << endl;
res = isOnLine(a,b,x);
if(res == 0){
Answer(a,b,g,x);
return 0;
}
res = isOnLine(a,b,y);
if(res == 0){
Answer(a,b,g,y);
return 0;
}
return 0;
}