我又是ssd,又是btd,但是是真心想求助
本人现在心态已经崩溃了
又没有人帮我看看这两份代码的区别?
眼睛不好,看了好久了,就是看不出来。
1、
#include<bits/stdc++.h>
using namespace std;
const int N=32005;
int n;
int x[N],tree[N],level[N];
inline int read()
{
int x=0;
bool w=0;
char c=getchar();
while(!isdigit(c))
w|=c=='-',c=getchar();
while(isdigit(c))
x=(x<<1)+(x<<3)+(c^48),c=getchar();
return w?-x:x;
}
inline int lowbit(int x)
{
return x&(-x);
}
inline void add(int x,int k)
{
for(register int i=x;i<=N;i+=lowbit(x))
tree[i]+=k;
}
inline int sum(int x)
{
int ans=0;
for(register int i=x;i;i-=lowbit(i))
ans+=tree[i];
return ans;
}
int main()
{
n=read();
for(register int i=1;i<=n;++i)
{
int y;
cin>>x[i];
cin>>y;
x[i]++;
}
for(register int i=1;i<=n;++i)
{
int now=sum(x[i]);
add(x[i],1);
++level[now];
}
for(register int i=1;i<=n;++i)
cout<<x[i]<<' ';cout<<endl;
for(register int i=0;i<n;++i)
printf("%d\n",level[i]);
return 0;
}
2、
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
using namespace std;
typedef long long ll;
const int N=15010;
const int M=32010;
int n,c[M],level[M];
struct Node{
int x,y;
}node[N];
void add(int x,int y){
while(x<=M){
c[x]+=y;
x+=x&(-x);
}
}
int ask(int x){
int res=0;
while(x>0){
res+=c[x];
x-=x&(-x);
}
return res;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>node[i].x;int y;cin>>y;
++node[i].x;
}
for(int i=1;i<=n;i++){
int cnt=ask(node[i].x);
add(node[i].x,1);
++level[cnt];
}
for(register int i=1;i<=n;++i)
cout<<node[i].x<<' ';cout<<endl;
for(int i=0;i<n;i++){
cout<<level[i]<<endl;
}
}