fork download
  1. // hloya template v25
  2.  
  3. // ░░░░░░░▄▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▄░░░░░░
  4. // ░░░░░░█░░▄▀▀▀▀▀▀▀▀▀▀▀▀▀▄░░█░░░░░
  5. // ░░░░░░█░█░▀░░░░░▀░░▀░░░░█░█░░░░░
  6. // ░░░░░░█░█░░░░░░░░▄▀▀▄░▀░█░█▄▀▀▄░
  7. // █▀▀█▄░█░█░░▀░░░░░█░░░▀▄▄█▄▀░░░█░
  8. // ▀▄▄░▀██░█▄░▀░░░▄▄▀░░░░░░░░░░░░▀▄
  9. // ░░▀█▄▄█░█░░░░▄░░█░░░▄█░░░▄░▄█░░█
  10. // ░░░░░▀█░▀▄▀░░░░░█░██░▄░░▄░░▄░███
  11. // ░░░░░▄█▄░░▀▀▀▀▀▀▀▀▄░░▀▀▀▀▀▀▀░▄▀░
  12. // ░░░░█░░▄█▀█▀▀█▀▀▀▀▀▀█▀▀█▀█▀▀█░░░
  13. // ░░░░▀▀▀▀░░▀▀▀░░░░░░░░▀▀▀░░▀▀░░░░
  14.  
  15. #include <bits/stdc++.h>
  16. #include <valarray>
  17. using namespace std;
  18.  
  19. bool dbg = 0;
  20.  
  21. clock_t start_time = clock();
  22. #define current_time fixed<<setprecision(6)<<(ld)(clock()-start_time)/CLOCKS_PER_SEC
  23.  
  24. #define f first
  25. #define s second
  26. #define mp make_pair
  27. #define pb push_back
  28. #define all(x) (x).begin(), (x).end()
  29.  
  30. #define ll long long
  31. #define ld long double
  32. #define pii pair<int,int>
  33. #define umap unordered_map<int, int>
  34.  
  35. #define files1 freopen("input.txt","r",stdin)
  36. #define files2 freopen("out2.txt","w",stdout)
  37. #define files files1;files2
  38. #define fast_io ios_base::sync_with_stdio(0);cin.tie(0)
  39.  
  40. #define endl '\n'
  41. #define ln(i,n) " \n"[(i) == (n) - 1]
  42.  
  43. void bad(string mes = "Impossible"){cout << mes;exit(0);}
  44. void bad(int mes){cout << mes;exit(0);}
  45.  
  46. template<typename T>
  47. string bin(T x, int st = 2){
  48. string ans = "";
  49. while (x > 0){
  50. ans += char('0' + x % st);
  51. x /= st;
  52. }
  53. reverse(ans.begin(), ans.end());
  54. return ans.empty() ? "0" : ans;
  55. }
  56.  
  57. template<typename T>
  58. void amax(T& x, T y) {
  59. x = max(x, y);
  60. }
  61.  
  62. template<typename T>
  63. void amin(T& x, T y) {
  64. x = min(x, y);
  65. }
  66.  
  67. inline int popcount(int x){
  68. int count = 0;
  69. __asm__ volatile("POPCNT %1, %0;":"=r"(count):"r"(x):);
  70. return count;
  71. }
  72.  
  73. template<typename T>
  74. T input(){
  75. T ans = 0, m = 1;
  76. char c = ' ';
  77.  
  78. while (!((c >= '0' && c <= '9') || c == '-')) {
  79. c = getchar();
  80. }
  81.  
  82. if (c == '-')
  83. m = -1, c = getchar();
  84. while (c >= '0' && c <= '9'){
  85. ans = ans * 10 + (c - '0'), c = getchar();
  86. }
  87. return ans * m;
  88. }
  89.  
  90. template<typename T> void read(T& a) { a = input<T>(); }
  91. template<typename T> void read(T& a, T& b) { read(a), read(b); }
  92. template<typename T> void read(T& a, T& b, T& c) { read(a, b), read(c); }
  93. template<typename T> void read(T& a, T& b, T& c, T& d) { read(a, b), read(c, d); }
  94.  
  95. const int inf = 1e9 + 20;
  96. const short short_inf = 3e4 + 20;
  97. const long double eps = 1e-12;
  98. const int maxn = 5e5 + 12, base = 1e9 + 7;
  99. const ll llinf = 2e18 + 5;
  100.  
  101. template<typename T>
  102. T binpow(T n, T s)
  103. {
  104. if (s <= 0)
  105. return 1LL;
  106. if (s % 2 == 0){
  107. T b = binpow(n, s / 2);
  108. return ( 1LL * b * b ) % base;
  109. } else {
  110. return (1LL* binpow(n, s - 1) * n) % base;
  111. }
  112. }
  113.  
  114. struct pt {
  115. ld x, y;
  116. pt(){}
  117. pt(ld x, ld y):x(x),y(y){}
  118. };
  119.  
  120. ld sqr(ld x) {
  121. return x * x;
  122. }
  123.  
  124. ld dist(pt v1, pt v2) {
  125. return sqrt(sqr(v1.x - v2.x) + sqr(v1.y - v2.y));
  126. }
  127.  
  128. ld angle(pt v1, pt v2, pt v3) {
  129. ld d1 = dist(v2, v3);
  130. ld d2 = dist(v1, v3);
  131. ld d3 = dist(v1, v2);
  132.  
  133. ld cs = - (sqr(d2) - sqr(d1) - sqr(d3)) / (2 * d1 * d3);
  134. // assert((ld)-1 - eps <= cs && cs <= (ld)1 + eps);
  135. return acos(cs);
  136. }
  137.  
  138. pt get_pt(int i, int n) {
  139. return pt(cos((ld)2 * M_PI * i / n), sin((ld)2 * M_PI * i / n));
  140. }
  141.  
  142. ld deg(ld rad) {
  143. return rad / M_PI * (ld)180;
  144. }
  145.  
  146. int main() {
  147. int n, a;
  148. // files1;
  149. cin >> n >> a;
  150. ld cl = -1000000;
  151.  
  152. int ans1, ans2, ans3;
  153.  
  154. int v1 = 0;
  155. for (int v3 = 1; v3 < n; v3++) {
  156. if (v3 > 1) {
  157. int v2 = v3 - 1;
  158. ld ang = deg(angle(get_pt(v1, n), get_pt(v2, n), get_pt(v3, n)));
  159. if (abs(ang - a) < abs(cl - a)) {
  160. ans1 = v1;
  161. ans2 = v2;
  162. ans3 = v3;
  163. cl = ang;
  164. }
  165. }
  166. if (v3 + 1 < n) {
  167. int v2 = v3 + 1;
  168. ld ang = deg(angle(get_pt(v1, n), get_pt(v2, n), get_pt(v3, n)));
  169. if (abs(ang - a) < abs(cl - a)) {
  170. ans1 = v1;
  171. ans2 = v2;
  172. ans3 = v3;
  173. cl = ang;
  174. }
  175. }
  176. }
  177. cout << ans1 + 1 << ' ' << ans2 + 1 << ' ' << ans3 + 1 << endl;
  178. return 0;
  179. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
1 1 -1702730495