Advertisement
Kali_prasad

count largest substring with equal no.of zeros and one's ..O(n)

Apr 12th, 2022
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. #pragma GCC optimize ("O3")
  2. #pragma GCC target ("sse4")
  3.  
  4. #include <bits/stdc++.h>
  5. using namespace std;
  6.  
  7. typedef long long ll;
  8. typedef pair<int, int> pii;
  9. typedef pair<string,int> psi;
  10. typedef unordered_map<int,int> mii;
  11. typedef unordered_map<long long,long long> mll;
  12. typedef unordered_map<string,int> msi;
  13. typedef unordered_map<char,int> mci;
  14. typedef unordered_set<int> si;
  15. typedef unordered_set<long long> sll;
  16. typedef unordered_set<string> ss;
  17. typedef unordered_set<char> sc;
  18. typedef map<int,int> ormii;
  19. typedef map<long long,long long> ormll;
  20. typedef map<string,int> ormsi;
  21. typedef map<char,int> ormci;
  22. typedef set<int> orsi;
  23. typedef set<long long> orsll;
  24. typedef set<string> orss;
  25. typedef set<char> orsc;
  26. typedef vector<int> vi;
  27. typedef vector<string> vs;
  28. typedef vector<char> vc;
  29. typedef vector<ll> vll;
  30. typedef vector<vector<int>> vvi;
  31. typedef vector<vector<string>> vvs;
  32. typedef vector<vector<ll>> vvll;
  33.  
  34. #define FOR(i, a, b) for (auto i=a; i<=(b); i++)
  35. #define FORd(i,b,a) for (int i =b; i >= a; i--)
  36. #define sz(x) (int)(x).size()
  37. #define mp make_pair
  38. #define pb push_back
  39. #define fi first
  40. #define se second
  41. #define ins insert
  42.  
  43. const int MOD = 1000000007;
  44. //type functions here
  45. //O(n) solution
  46. //data tested in vector v: {0},{1},{1,0},{1,0,0},{1,0,0,1},{1,0,0,1,1,1,1,1,1,1,0,0,0,1}
  47.  
  48.  
  49. int main() {
  50. ios_base::sync_with_stdio(false);
  51. cin.tie(NULL);
  52.  
  53. int tc=1;
  54. //cin>>tc;
  55. FOR(w,1,tc)
  56. {
  57. vector<int> v={1,0,0,1,1,1,1,1,1,1,0,0,0,1};
  58. int n=sz(v)-1;
  59. int x=0,ans=0;
  60. mii m;
  61. m[0]=-1;
  62. FOR(i,0,n)
  63. {
  64. x+=(v[i]==0?-1:1);
  65. if(m.find(x)!=m.end()) ans=max(ans,i-m[x]);
  66. else m[x]=i;
  67. }
  68. cout<<ans<<endl;
  69. }
  70. return 0;
  71. }
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement