首页 > 代码库 > 快速I/O 51node 1406

快速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 }

 

快速I/O 51node 1406