提交记录 10218


用户 题目 状态 得分 用时 内存 语言 代码长度
MN2016 noip17f. 【NOIP2017】列队 Time Limit Exceeded 70 2 s 44688 KB C++ 2.76 KB
提交时间 评测时间
2019-08-23 17:39:26 2020-08-01 02:03:34
#include<cstdio>
using namespace std;

const int maxn=3000100;
typedef long long ll;
int n,m,Q,tot,root[maxn],q[20],head=1,tail;
struct node
{
	int fa,ch[2];
	ll lval,rval,siz;
}a[maxn];
#define R register
#define I inline

I bool get(R int x)
{
	return x==a[a[x].fa].ch[1];
}

I void update(R int x)
{
	a[x].siz=a[a[x].ch[0]].siz+a[a[x].ch[1]].siz+a[x].rval-a[x].lval+1;
}

I int newnode(R ll lv,R ll rv)
{
	R int x;
	if (head>tail)
	{
		head=1;
		tail=0;
		x=++tot;
	}
	else
		x=q[head++];
	a[x].fa=a[x].ch[0]=a[x].ch[1]=0;
	a[x].lval=lv;
	a[x].rval=rv;
	a[x].siz=rv-lv+1;
	return x;
}

I void rotate(R int x)
{
	int y=a[x].fa,z=a[y].fa,k=get(x),w=a[x].ch[k^1];
	a[y].ch[k]=w;
	a[w].fa=y;
	a[z].ch[get(y)]=x;
	a[x].fa=z;
	a[x].ch[k^1]=y;
	a[y].fa=x;
	update(y);
	update(x);
}

I void splay(R int x,R int id)
{
	R int y,z;
	while (a[x].fa)
	{
		y=a[x].fa,z=a[y].fa;
		if (z)
		{
			if (get(x)==get(y))
				rotate(y);
			else
				rotate(x);
		}
		rotate(x);
	}
	root[id]=x;
}

I void push_back(R int id,R ll lv,R ll rv)
{
	R int x=newnode(lv,rv);
	if (!root[id])
	{
		root[id]=x;
		return;
	}
	R int rt=root[id];
	while (a[rt].ch[1])
		rt=a[rt].ch[1];
	splay(rt,id);
	a[rt].ch[1]=x;
	a[x].fa=rt;
	update(rt);
}

I int split(R int id,R int x,R ll k)
{
	R int y=newnode(a[x].lval+k,a[x].rval);
	a[x].rval=a[x].lval+k-1;
	if (!a[x].ch[1])
	{
		a[x].ch[1]=y;
		a[y].fa=x;
		splay(y,id);
		return y;
	}
	R int t=a[x].ch[1];
	while (a[t].ch[0])
		t=a[t].ch[0];
	a[t].ch[0]=y;
	a[y].fa=t;
	while (t!=x)
	{
		update(t);
		t=a[t].fa;
	}
	splay(y,id);
	return y;
}

I ll pop_kth(R int id,R ll k)
{
	R int x=root[id];
	while (1)
	{
		if (a[a[x].ch[0]].siz>=k)
			x=a[x].ch[0];
		else
		{
			k-=a[a[x].ch[0]].siz;
			if (k<=a[x].rval-a[x].lval+1)
			{
				if (k!=a[x].rval-a[x].lval+1)
					split(id,x,k);
				if (k!=1)
					x=split(id,x,k-1);
				break;
			}
			else
			{
				k-=a[x].rval-a[x].lval+1;
				x=a[x].ch[1];
			}
		}
	}
	splay(x,id);
	a[a[x].ch[0]].fa=a[a[x].ch[1]].fa=0;
	if (!a[x].ch[0])
	{
		root[id]=a[x].ch[1];
		q[++tail]=x;
		return a[x].lval;
	}
	int t=a[x].ch[0];
	while (a[t].ch[1])
		t=a[t].ch[1];
	splay(t,id);
	a[t].ch[1]=a[x].ch[1];
	a[a[x].ch[1]].fa=t;
	update(t);
	q[++tail]=x;
	return a[x].lval;
}

int read()
{
	int x=0;
	char c=getchar();
	while (c<48||c>57)
		c=getchar();
	while (c>=48&&c<=57)
		x=(x<<1)+(x<<3)+(c^48),c=getchar();
	return x;
}

int main()
{
	R int i,j;
	R ll val;
	n=read(),m=read(),Q=read();
	for (i=1;i<=n;i++)
	{
		push_back(i,1ll*(i-1)*m+1,1ll*(i-1)*m+m-1);
		push_back(0,1ll*i*m,1ll*i*m);
	}
	while (Q--)
	{
		i=read(),j=read();
		if (j==m)
		{
			val=pop_kth(0,1ll*i);
			push_back(0,val,val);
			printf("%lld\n",val);
		}
		else
		{
			val=pop_kth(0,1ll*i);
			push_back(i,val,val);
			val=pop_kth(i,1ll*j);
			push_back(0,val,val);
			printf("%lld\n",val);
		}
	}
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1444.88 us132 KBAcceptedScore: 5

Testcase #2423.7 us136 KBAcceptedScore: 5

Testcase #3442.22 us132 KBAcceptedScore: 5

Testcase #4446.45 us140 KBAcceptedScore: 5

Testcase #5440.41 us132 KBAcceptedScore: 5

Testcase #6440.03 us132 KBAcceptedScore: 5

Testcase #72.622 ms3 MB + 772 KBAcceptedScore: 5

Testcase #82.568 ms3 MB + 756 KBAcceptedScore: 5

Testcase #92.845 ms4 MB + 68 KBAcceptedScore: 5

Testcase #102.555 ms3 MB + 680 KBAcceptedScore: 5

Testcase #112 s2 MB + 292 KBTime Limit ExceededScore: 0

Testcase #122 s2 MB + 540 KBTime Limit ExceededScore: 0

Testcase #132 s6 MB + 1004 KBTime Limit ExceededScore: 0

Testcase #142 s8 MB + 104 KBTime Limit ExceededScore: 0

Testcase #152 s29 MB + 804 KBTime Limit ExceededScore: 0

Testcase #162 s29 MB + 280 KBTime Limit ExceededScore: 0

Testcase #17162.637 ms14 MB + 476 KBAcceptedScore: 5

Testcase #18154.857 ms14 MB + 116 KBAcceptedScore: 5

Testcase #19668.708 ms42 MB + 620 KBAcceptedScore: 5

Testcase #20671.475 ms43 MB + 656 KBAcceptedScore: 5


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-29 23:35:26 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠