fork(1) download
  1. #include<string.h>
  2. #include<iostream>
  3. #include <stdio.h>
  4. #include <cstdlib>
  5.  
  6. using namespace std;
  7.  
  8. int compare (const void * a, const void * b)
  9. {
  10. return ( *(int*)b - *(int*)a );
  11. }
  12. int main()
  13. {
  14. long int a;
  15.  
  16. while(cin>>a)
  17. {
  18. if (cin.peek()=='\n') cout<<"-"<<endl;
  19.  
  20. long int *tab;
  21. tab = new long int[100000];
  22. long int i=0;
  23. for(i=0; i<100000; i++)
  24. {
  25. cin>>tab[i];
  26. if (cin.peek()=='\n') break;
  27. }
  28.  
  29. //i=rozmiar tablicy -1
  30. //teraz tworzę tablicę tab2 o odpowiednim rozmiarze
  31. long int *tab2;
  32. tab2 = new long int[i+1];
  33. for(long int i2=0; i2<=i; i2++)
  34. {
  35. tab2[i2]=tab[i2];
  36. }
  37.  
  38. qsort(tab2, i+1, sizeof(long int), compare);
  39.  
  40. //x=licznik powtarzających się elementów w ciągu do usunięcia
  41. //teraz usuwam powtarzające się elementy w tab2
  42. int x=0;
  43. for(long int i2=0; i2<i-x; i2++)
  44. {
  45. if (tab2[i2+1]==tab2[i2])
  46. {
  47.  
  48. for(long int i3=i2; i3<=i-1-x; i3++)
  49. {
  50.  
  51. tab2[i3]=tab2[i3+1];
  52. }
  53.  
  54. x++;
  55. i2--;
  56. }
  57. }
  58. //przepisuje do tab 3 elementy z tab 2, rozmiar tablicy pomniejszony o liczbe powtarzajacych sie elementow
  59. long int *tab3;
  60. tab3=new long int[i-x+1];
  61. for(long int b=0; b<=i-x; b++)
  62. {
  63. tab3[b]=tab2[b];
  64. }
  65.  
  66. //jesli a jest wieksze od rozmiaru tab3 to wynik jest "=", w przeciwnym razie wynik to "a"element tablicy
  67.  
  68.  
  69. if(a-1>i-x)cout<<"-"<<endl;
  70. else cout <<tab3[a-1]<<endl;
  71.  
  72. delete []tab;
  73. delete []tab2;
  74. delete []tab3;
  75. }
  76.  
  77. return 0;
  78. }
  79.  
  80.  
  81.  
  82.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Standard output is empty