Advertisement
Guest User

Untitled

a guest
Apr 26th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4.  
  5. /**
  6. Se da un vector de n numere intregi.
  7. Sa se raspunda la m intrebari de forma:
  8. "care este suma elementelor de la pozitia i la pozitia j?".
  9.  
  10.  
  11. n=9
  12. vector: 3 4 -2 10 4 -5 2 -1 -1
  13. poz: 1 2 3 4 5 6 7 8 9
  14.  
  15. (4, 8) ----> 10
  16. (8, 9) ----> -2
  17.  
  18. Solutie 1: O(m*n)
  19. Faci for de fiecare data
  20.  
  21.  
  22. Solutie 2:
  23. Se construieste vectorul s de sume partiale, in care vom memora
  24. s[i] = suma primelor i elemente din vectorul a
  25.  
  26. vector: 3 4 -2 10 4 -5 2 -1 -1
  27. poz: 1 2 3 4 5 6 7 8 9
  28.  
  29. s: 3 7 5 15 19 14 16 15 14
  30. poz: 1 2 3 4 5 6 7 8 9
  31.  
  32.  
  33. (1, 7) ---> 16
  34. (i, j) ---> s[j] - s[i-1]
  35.  
  36. Complexitate timp: O(n+m)
  37. Memorie auxiliara: O(n)
  38.  
  39. */
  40.  
  41. int a[100003];
  42. long long s[1000000];
  43.  
  44. int main()
  45. {
  46. /**
  47. a[i]<1000000
  48. n<1000000
  49. s[n] =
  50. */
  51. int n,m,i;
  52. ifstream fin("date.in");
  53. ofstream fout("date.out");
  54. fin>>n;
  55. s[0] = 0;
  56. for(i=1;i<=n;++i)
  57. {
  58. fin>>a[i];
  59. s[i] = s[i-1] + a[i];
  60. }
  61.  
  62. fin>>m;
  63. int st, dr;
  64. for(i=1;i<=m;++i)
  65. {
  66. fin>>st>>dr;
  67. fout<<s[dr] - s[st-1]<<"\n";
  68. }
  69. fin.close();
  70. fout.close();
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement