Advertisement
Guest User

Untitled

a guest
Jul 17th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main()
  5. {
  6. int a,b,c,n,v[100];
  7. cin>> a >> b >> c >> n;
  8. for(int i=1; i<=n; i++)
  9. {
  10. cin>>v[i];
  11. }
  12.  
  13. //pct a
  14. // iau orice pereche de 2 elemente din tot sirul
  15. for(int i=1; i<n; i++)
  16. {
  17. for(j=i+1; j<=n; j++)
  18. if( a*v[i]*v[i] + b*v[j]*v[j] == c )
  19. cout<< v[i] <<" "<< v[j]<<endl;
  20. }
  21.  
  22. int st=1,dr=n,pairs=0;
  23. // TWO POINTERS
  24. // numerele fiind SORTATE CRESCATOR, plec cu o varibila ce imi tine un indice plecand din stanga
  25. // si una plecand din dreapta, daca rezultatul formulei == c, pairs++,
  26. // daca rezultatul este < c, cresc indicele stanga, rezultatul sigur va fi mai mare astfel
  27. // daca rezultatul este > c, scad indicele drept, rezultatul sigur va fi mai mic astfel
  28.  
  29. while(st<n && dr>1)
  30. {
  31. if(a*v[st]*v[st] + b*v[dr]*v[dr] == c)
  32. {
  33. pairs++;
  34. dr--; // sau st ++;
  35. }
  36. else
  37. if(a*v[st]*v[st] + b*v[dr]*v[dr] > c)
  38. dr--;
  39. else
  40. if(a*v[st]*v[st] + b*v[dr]*v[dr] < c)
  41. st++;
  42. }
  43. //acum se intampla ca la interclasare
  44. while(st<n)
  45. {
  46. if(a*v[st]*v[st] + b*v[dr]*v[dr] == c)
  47. {
  48. pairs++;
  49. st++;
  50. }
  51. else
  52. if(a*v[st]*v[st] + b*v[dr]*v[dr] < c)
  53. st++;
  54. }
  55. while(dr>1)
  56. {
  57. if(a*v[st]*v[st] + b*v[dr]*v[dr] == c)
  58. {
  59. pairs++;
  60. dr--;
  61. }
  62. else
  63. if(a*v[st]*v[st] + b*v[dr]*v[dr] > c)
  64. dr--;
  65. }
  66.  
  67. return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement