fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3. #include <unordered_map>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. pair<vector<long long >,long long > solve(vector<long long >& niz) {
  9. unordered_map<long long , long long > mapaPrefiksnihSuma;
  10. unordered_map<long long , long long > mapaUcestalosti;
  11. long long maxUcestalost = 0, najucestalijiElement = niz[0];
  12. long long start = -1, end = -1;
  13. long long prefiksnaSuma = 0;
  14.  
  15. mapaPrefiksnihSuma[0] = -1;
  16.  
  17. for (long long i = 0; i < niz.size(); i++) {
  18. prefiksnaSuma += niz[i];
  19.  
  20. if (mapaPrefiksnihSuma.find(prefiksnaSuma) != mapaPrefiksnihSuma.end()) {
  21. long long levo = mapaPrefiksnihSuma[prefiksnaSuma] + 1;
  22. vector<long long> podniz(niz.begin() + levo, niz.begin() + i + 1);
  23.  
  24.  
  25. unordered_map<long long, long long> tempUcestalost;
  26. for (long long num : podniz) tempUcestalost[num]++;
  27.  
  28.  
  29. for (auto& [num, ucestalost] : tempUcestalost) {
  30. if (ucestalost > maxUcestalost) {
  31. maxUcestalost = ucestalost;
  32. najucestalijiElement = num;
  33. start = levo;
  34. end = i;
  35. }
  36. }
  37. } else {
  38. mapaPrefiksnihSuma[prefiksnaSuma] = i;
  39. }
  40. }
  41.  
  42. vector<long long> najboljiPodniz;
  43. if (start != -1) {
  44. najboljiPodniz.assign(niz.begin() + start, niz.begin() + end + 1);
  45. }
  46.  
  47. return {najboljiPodniz, najucestalijiElement};
  48. }
  49.  
  50. int main() {
  51.  
  52. ios_base::sync_with_stdio(false);
  53. cin.tie(NULL);
  54. vector<long long> niz;
  55. long long n;
  56. cin >> n;
  57. for (long long i = 0; i < n; i++){
  58. long long temp;
  59. cin >> temp;
  60. niz.push_back(temp);
  61. }
  62.  
  63. auto [podniz, najucestaliji] = solve(niz);
  64.  
  65. long long brojac = 0;
  66.  
  67. for (long long num : podniz)
  68. if(num == najucestaliji)
  69. brojac++;
  70. cout << brojac;
  71.  
  72. return 0;
  73. }
Success #stdin #stdout 0.01s 5320KB
stdin
5
1 2 0 -2 -1
stdout
1