1. #include <iostream>
  2. using namespace std;
  3. #include<map>
  4. #include<cmath>
  5. #include<algorithm>
  6. int gcd (int a,int b) {
  7. if(b==0)
  8. return 1;
  9. if(a%b==0)
  10. return b;
  11. else
  12. return gcd(b,a%b);
  13. }
  14. int main()
  15. {
  16. int n;
  17. cin>>n;
  18. map < pair < int,int > , int > m;
  19. vector < pair < int,int > > v;
  20. for(int i=0;i<n;i++) {
  21. v.push_back(make_pair(0,0));
  22. int a,b,c;
  23. cin>>a>>b>>c;
  24. if(a<0&&b<0) {
  25. a=-1*a;
  26. b=-1*b;
  27. } else if(b<0) {
  28. a=-1*a;
  29. b=-1*b;
  30. }
  31. int x = gcd(abs(a),abs(b));
  32. a=a/x;
  33. b=b/x;
  34. if(b==0)
  35. a=1;
  36. if(a==0)
  37. b=1;
  38. if(m.find(make_pair(a,b))==m.end()){
  39. m[make_pair(a,b)]=1;
  40. } else {
  41. m[make_pair(a,b)]++;
  42. }
  43. v[i].first=a;
  44. v[i].second=b;
  45. }
  46. int q;
  47. cin>>q;
  48. while(q--){
  49. int x;
  50. cin>>x;
  51. x--;
  52. int a=v[x].first;
  53. int b=v[x].second;
  54. if(a>0) {
  55. b=-1*b;
  56. } else {
  57. a=-1*a;
  58. }
  59. if(m.find(make_pair(b,a))==m.end()){
  60. cout<<0<<endl;
  61. } else {
  62. cout<<m[make_pair(b,a)]<<endl;
  63. }
  64. }
  65. }
Language: C++