Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- /*
- Fie n lungimea șirului s. Se construiește vectorul t[] în care t[0] = 1 și, pentru i=1..n, t[i] = numărul de biți de 1 minus numărul de biți de 0 din primii i biți din șir. Soluția problemei este dată de numărul de perechi (i, j) cu 0 ≤ i < j ≤ n și t[i] = t[j]. Complexitate O(n).
- */
- long long SecvBiti(char s[])
- {
- int n=0,i=0,nb0=0,nb1=0;
- while(s[i]!=0)
- ++n;
- long long t[10001];
- int F[1001];
- t[0]=1;
- F[0]=1;
- for(int i=1;i<=n;++i)
- {
- if(s[i-1]=='0')
- ++nb0;
- else
- ++nb1;
- t[i]=nb1-nb0;
- ++F[t[i]];
- }
- int MAX=F[0];
- for(int i=1;i<=n;++i)
- cout<<F[i]<<' ';
- cout<<endl;
- for(int i=1;i<=n;++i)
- if(F[i]>MAX)
- MAX=F[i];
- return MAX;
- }
- int main()
- {
- char s[100000];
- cin>>s;
- cout<<SecvBiti(s);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement