Link
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e7+10;
struct node{
int l,r,sum;
}tree[4*N];
int a[N],n,m;
void build_lintree(int root,int l,int r)
{
tree[root].l=l,tree[root].r=r;
if(l==r)
{
tree[root].sum=a[l];
return ;
}
int mid=(l+r)/2;
build_lintree(root*2,l,mid);
build_lintree(root*2+1,mid+1,r);
tree[root].sum=tree[root*2].sum+tree[root*2+1].sum;
}
void updata(int root,int x,int k)
{
if(tree[root].l==tree[root].r )
{
tree[root].sum+=k;
return ;
}
int mid=(tree[root].l+tree[root].r)/2;
if(x<=mid)
{
updata(root*2,x,k);
}
else
{
updata(root*2+1,x,k);
}
tree[root].sum=tree[root*2].sum+tree[root*2+1].sum;
}
int query(int root,int l,int r)
{
if(tree[root].l>=l && tree[root].r<=r)
{
return tree[root].sum;
}
int mid=(tree[root].l+tree[root].r)/2,ans=0;
if(l<=mid)
{
ans+=query(root*2,l,r);
}
if(r>mid)
{
ans+=query(root*2+1,l,r);
}
return ans;
}
signed main() {
ios::sync_with_stdio(0);
cout.tie(0);
cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
{
a[i]=i;
}
build_lintree(1,1,n);
for(int i=1;i<=n;i++)
{
printf("%lld\n",query(1,1,i));
}
return 0;
}
MLE