Advertisement
Guest User

Untitled

a guest
Apr 28th, 2015
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <set>
  4. #include <vector>
  5. #include <iterator>
  6.  
  7. using namespace std;
  8. int k=0,ans=0;
  9. double s(double x, double y){
  10.     return 0.25*pow(sqrt(pow(x-y,2)+4)-x-y,2);
  11. }
  12. struct st{
  13.     double s,x,y;
  14.     int m,n;
  15. };
  16. vector<st>mainSet;
  17. void add(st x){ // binsearch?
  18.     auto i=mainSet.begin(); //decreasing order
  19.     while (i!=mainSet.end()&&i->s>x.s) i++;
  20.     mainSet.insert(i,x);
  21. }
  22. double next_x(double x,double y){
  23.     return (x-y+sqrt(pow(y-x,2)+4))/2;
  24. }
  25. double next_y(double x,double y){
  26.     return 2/(x-y+sqrt(pow(y-x,2)+4));
  27. }
  28. st next_sq1(st x){
  29.     return {s(x.x,next_y(x.x,x.y)),x.x,next_y(x.x,x.y),x.m+1,x.n}; //m -- y, n -- x
  30. }
  31. st next_sq2(st x){
  32.     return {s(next_x(x.x,x.y),x.y),next_x(x.x,x.y),x.y,x.m,x.n+1}; //m -- y, n -- x
  33. }
  34. int main()
  35. {
  36.  
  37.     add({s(1,1),1,0,0,0});
  38.     while (k!=20){
  39.         ans++;
  40.     st temp=*mainSet.begin();
  41.     if (temp.m==3&&temp.n==3) k++;
  42.     mainSet.erase(mainSet.begin());
  43.     add(next_sq1(temp));
  44.     add(next_sq2(temp));
  45.     }
  46.  
  47.     cout<<ans;
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement