Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. /*
  2. Silver Marriage, tunyash@gmail.com
  3. */
  4. #include <iostream>
  5. #include <fstream>
  6. #include <stack>
  7. #include <cstdlib>
  8. #include <cmath>
  9. #include <string>
  10. #include <set>
  11. #include <map>
  12. #include <vector>
  13. #include <algorithm>
  14. #include <ctime>
  15. #include <cassert>
  16. #include <stdio.h>
  17. #include <queue>
  18.  
  19. using namespace std;
  20.  
  21. #define mp make_pair
  22. #define pb push_back
  23. #define gcd(a,b) __gcd(a,b)
  24. #define forn(i,n) for(int i = 0; i < n; i++)
  25. #define ford(i,n) for(int i = n - 1; i >= 0; i--)
  26. #define forab(i,l,r) for(int i = l; i <= r; i++)
  27. #define forabd(i,r,l) for(int i = r; i >= l; i--)
  28. #define sqr(x) ((x) * (x))
  29. #define X first
  30. #define Y second
  31. #define FILENAME ""
  32.  
  33. const long long base = 1000000000 + 7;
  34. const long double eps = 1e-9;
  35.  
  36. typedef long long ll;
  37. typedef pair<int, int> pii;
  38. typedef vector<int> vi;
  39.  
  40.  
  41. int x[1005], y[1005], r[1005];
  42.  
  43. int dir[1005];
  44. int n;
  45.  
  46. void dfs(int v)
  47. {
  48. for (int i = 0; i < n; i++)
  49. {
  50. int dist = (x[i]-x[v]) * (x[i]-x[v]) + (y[i]-y[v])*(y[i]-y[v]);
  51. if (dist == (r[i] + r[v])* (r[i]+r[v]))
  52. {
  53. assert(dir[i] == -1 || dir[i] == 1 - dir[v]);
  54. if (dir[i] == -1)
  55. {
  56. dir[i] = 1 - dir[v];
  57. dfs(i);
  58. }
  59. }
  60. }
  61. }
  62.  
  63. void solve(){
  64. cin >> n;
  65. for (int i = 0; i < n; i++)
  66. {
  67. cin >> x[i] >> y[i] >> r[i];
  68. }
  69.  
  70. for (int i = 0; i < n; i++) dir[i] = -1;
  71. dir[0] = 0;
  72. dfs(0);
  73.  
  74.  
  75. for (int i = 0; i < n; i++)
  76. {
  77. int num = r[0];
  78. int den = r[i];
  79. if (dir[i] == -1)
  80. {
  81. cout << "not moving" << endl;
  82. continue;
  83. }
  84.  
  85. int g = __gcd(num, den);
  86. cout << num/g;
  87. if (den/g != 1) cout << "/" << den/g;
  88. cout << " ";
  89. if (dir[i] == 0) cout << "clockwise";
  90. else if (dir[i] == 1) cout << "counterclockwise";
  91. cout << endl;
  92. }
  93.  
  94. }
  95.  
  96. int main(){
  97. ios_base :: sync_with_stdio(false);
  98. int test;
  99. cin >> test;
  100. while (test-->0){
  101. solve();
  102. }
  103. return 0;
  104. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement