fork download
  1. /*
  2.  * File: main.cpp
  3.  * Author: Piotr Tarsa
  4.  */
  5.  
  6. #include <cassert>
  7. #include <climits>
  8. #include <cstdio>
  9. #include <cstdlib>
  10. #include <ctime>
  11. #include <ctype.h>
  12.  
  13. int adf88(int *tab, int length) {
  14. if (--length > 0) {
  15. int max = adf88(tab, length);
  16. if (tab[max] > tab[length])
  17. return max;
  18. }
  19. return length;
  20. }
  21.  
  22. int wibowit(int *a, int l, int i, int gi, int gv) {
  23. if (i == l)
  24. return gi;
  25. else if (a[i] < gv)
  26. return wibowit(a, l, i + 1, gi, gv);
  27. else
  28. return wibowit(a, l, i + 1, i, a[i]);
  29. }
  30.  
  31. int wibowit(int *a, int l) {
  32. return wibowit(a, l, 0, -1, INT_MIN);
  33. }
  34.  
  35. int petla(int *a, int l) {
  36. int gi = -1;
  37. int gv = INT_MIN;
  38. for (int i = 0; i < l; i++)
  39. if (a[i] >= gv) {
  40. gi = i;
  41. gv = a[i];
  42. }
  43. return gi;
  44. }
  45.  
  46. int main(int argc, char** argv) {
  47.  
  48. const int32_t N = 45678;
  49. int32_t * const tablica = new int[N];
  50. for (int32_t i = 0; i < N; i++)
  51. tablica[i] = rand();
  52. {
  53. int64_t suma = 0;
  54. clock_t const start = clock();
  55. for (int32_t i = N / 2; i < N; i++)
  56. suma += adf88(tablica, i);
  57. printf("%ld ", suma);
  58. printf("%lu\n", clock() - start);
  59. }
  60. {
  61. int64_t suma = 0;
  62. clock_t const start = clock();
  63. for (int32_t i = N / 2; i < N; i++)
  64. suma += wibowit(tablica, i);
  65. printf("%ld ", suma);
  66. printf("%lu\n", clock() - start);
  67. }
  68. {
  69. int64_t suma = 0;
  70. clock_t const start = clock();
  71. for (int32_t i = N / 2; i < N; i++)
  72. suma += petla(tablica, i);
  73. printf("%ld ", suma);
  74. printf("%lu\n", clock() - start);
  75. }
  76.  
  77. delete [] tablica;
  78. }
  79.  
Success #stdin #stdout 9.45s 4128KB
stdin
Standard input is empty
stdout
3745596 6730000
3745596 1360000
3745596 1370000