Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <vector>
- #include <queue>
- #include <algorithm>
- #include <string>
- #include <stack>
- #include <set>
- #include <map>
- #define pii pair <int,int>
- #define vec vector
- using namespace std;
- using ll = long long;
- using ld = long double;
- using db = double;
- void cv(vector <int> &v){
- for (auto x: v) cout<<x<<' ';
- cout<<"\n";
- }
- void cvl(vector <ll> &v){
- for (auto x: v) cout<<x<<' ';
- cout<<"\n";
- }
- void cvv(vector <vector <int> > &v){
- for (auto x: v) cv(x);
- cout<<"\n";
- }
- void cvb(vector <bool> v){
- for (bool x: v) cout<<x<<' ';
- cout<<"\n";
- }
- void cvs(vector <string> v){
- for (auto a: v){
- cout<<a<<"\n";
- }
- }
- int N;
- struct tree{
- vector <int> Z;
- void bld(){
- cin>>N;
- int rawN=N;
- N = pow(2, ceil(log2(N)) ) ;
- //cout<<"N= "<<N<<"\n";
- Z.assign(2*N-1,0);
- for (int i = N-1; i < N-1 + rawN;++i){
- int d; cin>>d;
- if (d == 0) Z[i]=1;
- }
- for (int i = N-2; i >=0;--i) Z[i] = Z[2*i+1] + Z[2*i+2];
- //cv(Z);
- }
- void sh(){
- int k = log2(N);
- int id=-1;
- for (int i=0;i<=k;++i){
- for (int j=0;j<pow(2,i);++j){
- id++; cout<<Z[id]<<" ";
- }cout<<"\n";
- }
- }
- };
- int main()
- {
- /*ios::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);*/
- tree T;
- T.bld();
- T.sh();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement