为什么本地运行无错提交WA#9#10
  • 板块P1801 黑匣子
  • 楼主AAA404
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/5/5 18:47
  • 上次更新2023/10/23 16:35:28
查看原帖
为什么本地运行无错提交WA#9#10
723198
AAA404楼主2023/5/5 18:47

rt,本地运行#9数据无错,提交却提示我200001行太长,可是我的200001行是200000个数据的换行符,理论上应该自动忽略 Record

Code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2*1e5+1;
ll n,m,u[N],l[N],cnt=1;
struct nn{
	ll v,id;
}a[N];
inline bool cmp(nn a,nn b)
{
	return a.v<b.v;
}
struct node{
	ll l,r,v;
};
struct Tree{
	node Tr[N<<2];
	inline ll ls(ll id){return id<<1;}
	inline ll rs(ll id){return id<<1|1;}
	inline void pushup(ll id)
	{
		Tr[id].v=Tr[ls(id)].v+Tr[rs(id)].v;
		return;
	}
	inline void build(ll id,ll l,ll r)
	{
		Tr[id].l=l,Tr[id].r=r;
		if(l==r)
		{
			return;
		}
		ll mid=l+r>>1;
		build(ls(id),l,mid),build(rs(id),mid+1,r);
		pushup(id);
		return;
	}
	inline void modify(ll id,ll p)
	{
		if(Tr[id].l==p&&Tr[id].r==p)
		{
			Tr[id].v++;
			return;
		}
		ll mid=Tr[id].l+Tr[id].r>>1;
		if(p<=mid)modify(ls(id),p);
		if(p>mid)modify(rs(id),p);
		pushup(id);
		return;
	}
	inline ll query(ll id,ll p)
	{
		if(Tr[id].l==Tr[id].r)
		{
			return Tr[id].l;
		}
		if(Tr[ls(id)].v>=p)return query(ls(id),p);
		else return query(rs(id),p-Tr[ls(id)].v);
	}
}T;
int main()
{
 //	freopen("1.in","r",stdin);
 //	freopen("1.out","w",stdout);
 	cin>>m>>n;
 	for(int i=1;i<=m;i++)cin>>a[i].v,a[i].id=i;
 	for(int i=1;i<=n;i++)cin>>u[i];
 	T.build(1,1,m);
 	sort(a+1,a+m+1,cmp);
 	for(int i=1;i<=m;i++)l[a[i].id]=i;
 	for(int i=1;i<=m;i++)
 	{
 		T.modify(1,l[i]);
 		while(i==u[cnt])
 		{
 			printf("%lld\n",a[T.query(1,cnt)].v);
 			++cnt;
		}
	}
 	return 0;
}

2023/5/5 18:47
加载中...