yicongli

CF135B

Jan 21st, 2021 (edited)
665
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define gc c=getchar()
  6. #define r(x) read(x)
  7. #define ll long long
  8.  
  9. template<typename T>
  10. inline void read(T&x){
  11.     x=0;T k=1;char gc;
  12.     while(!isdigit(c)){if(c=='-')k=-1;gc;}
  13.     while(isdigit(c)){x=x*10+c-'0';gc;}x*=k;
  14. }
  15.  
  16. int x[10];
  17. int y[10];
  18. int ord[10];
  19.  
  20. inline int sqr(int x){
  21.     return x*x;
  22. }
  23.  
  24. inline int l(int a,int b){
  25.     return sqr(x[ord[a]]-x[ord[b]])+sqr(y[ord[a]]-y[ord[b]]);
  26. }
  27.  
  28. int main(){
  29.     // freopen(".in","r",stdin);
  30.     // freopen(".out","w",stdout);
  31.     for(int i=1;i<=8;++i){
  32.         r(x[i]),r(y[i]);
  33.         ord[i]=i;
  34.     }
  35.     do{
  36.         if(l(1,2)==l(2,3) && l(2,3)==l(3,4) && l(3,4)==l(4,1) && l(1,3)==l(2,4) && l(5,6)==l(7,8) && l(5,8)==l(6,7) && l(6,8)==l(5,7)){
  37.             puts("YES");
  38.             for(int i=1;i<=4;++i)printf("%d ",ord[i]);puts("");
  39.             for(int i=5;i<=8;++i)printf("%d ",ord[i]);puts("");
  40.             return 0;
  41.         }
  42.     }while(next_permutation(ord+1,ord+9));
  43.     puts("NO");
  44.     return 0;
  45. }
RAW Paste Data