求助,本地可通过的样例提交后RE

P1801 黑匣子

https://www.luogu.com.cn/record/33400580 这是我的提交记录
by dottle @ 2020-05-06 14:37:41


where's your output
by Drystynt @ 2020-05-06 14:42:04


输出呢
by Drystynt @ 2020-05-06 14:42:20


对不起,那一行我改了一下,本来是 ``` printf("%d\n",fd(1,1,sz,i)); ```
by dottle @ 2020-05-06 14:43:54


@[dottle](/user/79067)
by JK_LOVER @ 2020-05-06 15:15:22


```cpp #include<bits/stdc++.h> #define N 3000000 #define mid (l+r>>1) #define lson k<<1 #define rson k<<1|1 using namespace std; int s[N],a[N],x,b[N],n,m,sz,tp,nw; void add(int k,int l,int r,int p){//p位置增加1 s[k]++; if(l==r)return; else if(p<=mid)add(lson,l,mid,p); else add(rson,mid+1,r,p); } int fd(int k,int l,int r,int p){//找第k小的数 if(l==r)return b[l]; else if(p<=s[lson]) return fd(lson,l,mid,p); else return fd(rson,mid+1,r,p-s[lson]); } signed main(){ // freopen("P1801_1.in","r",stdin); scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[i]),b[i]=a[i]; sort(b+1,b+1+n),sz=unique(b+1,b+1+n)-(b+1);//离散化 for(int i=1;i<=n;i++)//将a变为在b中的对应位置 a[i]=lower_bound(b+1,b+1+sz,a[i])-b; for(int i=1;i<=m;i++){ scanf("%d",&x); while(tp<x) add(1,1,sz,a[++tp]); printf("%d\n",fd(1,1,sz,i)); } return 0; } ```
by JK_LOVER @ 2020-05-06 15:15:28


```cpp int fd(int k,int l,int r,int p){//找第k小的数 if(l==r)return b[l]; else if(p<=s[lson]) return fd(lson,l,mid,p); else return fd(rson,mid+1,r,p-s[lson]); } ```
by JK_LOVER @ 2020-05-06 15:15:39


@[dottle](/user/79067) int 没返回。。。
by JK_LOVER @ 2020-05-06 15:15:54


已经理解了,太感谢了 ~~我在干什么啊啊啊啊啊啊~~
by dottle @ 2020-05-06 15:17:32


本地应该是自动返回最后一个语句,所以过了
by dottle @ 2020-05-06 15:18:16


| 下一页