快速I/O 51node 1406
1 #include <bits/stdc++.h> 2 using namespace std; 3 #define LL long long 4 typedef pair<int,int> pii; 5 const int inf = 0x3f3f3f3f; 6 const int N =1e6+10; 7 const int MOD = 1e9+7; 8 #define clc(a,b) memset(a,b,sizeof(a)) 9 const double eps = 1e-8; 10 void fre() {freopen("in.txt","r",stdin);} 11 void freout() {freopen("out.txt","w",stdout);} 12 const int R=10000000,P=1000000007; 13 char buf[R+7],*ptr=buf-1,wb[R+7],*wp=wb; 14 int read(){ 15 int x=0,c=*++ptr; 16 while(c<48)c=*++ptr; 17 while(c>47)x=x*10+c-48,c=*++ptr; 18 return x; 19 } 20 void print(int x){ 21 int stk[13],stp=0; 22 if(!x)*(wp++)=48; 23 while(x)stk[stp++]=x%10+48,x/=10; 24 while(stp)*(wp++)=stk[--stp]; 25 *(wp++)=10; 26 } 27 int cnt[N]; 28 int main(){ 29 int n; 30 fread(buf,1,R,stdin); 31 n=read(); 32 int mx=-inf; 33 for(int i=1;i<=n;i++){ 34 int x; 35 x=read(); 36 cnt[x]++; 37 mx=max(mx,x); 38 } 39 mx=min(1000001,mx); 40 for(int j=20;j>=0;j--){ 41 for(int i=1;i<=mx;i++){ 42 if(i&(1<<j)){ 43 cnt[i-(1<<j)]+=cnt[i]; 44 } 45 } 46 } 47 for(int i=0;i<=1000000;++i)print(cnt[i]); 48 fwrite(wb,1,wp-wb,stdout); 49 return 0; 50 }