Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.54 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. struct Panstwo
  5. {
  6. int nr;
  7. unsigned wspolczynnik;
  8. };
  9.  
  10. int main()
  11. {
  12. ios_base::sync_with_stdio(false);
  13. unsigned n;cin>>n;
  14. unsigned ile=0;
  15. Panstwo* tab=new Panstwo[n];
  16. int indexy[1001];//przechowuje indeksy elementow /*zalozenie n<=1000*/
  17. for(unsigned i=0;i<n;++i)
  18. {
  19. cin>>tab[i].nr;
  20. cin>>tab[i].wspolczynnik;
  21. indexy[tab[i].nr]=i;//zeby latwiej bylo szukac to przypisane indeksy
  22. }
  23.  
  24. unsigned m;cin>>m;
  25. for(unsigned j=0;j<m;++j)
  26. {
  27. unsigned p,w;
  28. cin>>p>>w;
  29. int szukany=indexy[p/*i*/];//index szukanego elementu
  30. tab[szukany].wspolczynnik=w;//zmiana wartosci
  31.  
  32. unsigned ojciec=(szukany-1)/2;
  33. unsigned lsyn=(szukany*2)+1;
  34. unsigned psyn=lsyn+1;
  35.  
  36. /*PRZESIEW*/ /*fatherV*/
  37. if(szukany>0&&w>tab[ojciec].wspolczynnik)
  38. {
  39. /*przesiew w gore*/
  40.  
  41. while(szukany>0&&w>tab[ojciec].wspolczynnik)
  42. {
  43. swap(indexy[tab[ojciec].nr],indexy[tab[szukany].nr]);
  44. swap(tab[szukany],tab[ojciec]);//?
  45. ++ile;
  46. szukany=ojciec;
  47. --ojciec;
  48. ojciec/=2;
  49. }
  50. } /*V l-son*/ /*p- son*/
  51. else /*CHECKPOINT*/
  52. {
  53. if((lsyn<n&&w<tab[lsyn].wspolczynnik)||(psyn<n&&w<tab[psyn].wspolczynnik))
  54. {
  55. // int lsyn=szukany*2;--lsyn;int psyn=lsyn+1;
  56. while((lsyn<n&&w<tab[lsyn].wspolczynnik)||(psyn<n&&w<tab[psyn].wspolczynnik))
  57. {
  58. if(psyn<n&&tab[psyn].wspolczynnik>tab[lsyn].wspolczynnik)
  59. {
  60.  
  61. swap(indexy[szukany],indexy[psyn]);
  62. swap(indexy[tab[szukany].nr],indexy[tab[psyn].nr]);
  63. ++ile;
  64. szukany=psyn;
  65. psyn*=2;
  66. ++psyn;
  67.  
  68.  
  69. }
  70. else
  71. {
  72. swap(indexy[szukany],indexy[lsyn]);
  73. swap(indexy[tab[szukany].nr],indexy[tab[lsyn].nr]);
  74. ++ile;
  75. szukany=lsyn;
  76. lsyn*=2;
  77. ++lsyn;/*ZMIENIAC TEZ PSYNA?*/
  78. }
  79.  
  80.  
  81. }
  82. }
  83. //else break;
  84. }
  85. }
  86. cout<<ile;
  87.  
  88. delete [] tab;
  89. return 0;
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement