【codeforces】Codeforces Round #552 (Div. 3) E. Two Teams

题目链接:http://codeforces.com/contest/1154/problem/E

题解:数组模拟链表,按照操作模拟。

#include<bits/stdc++.h>
using namespace std;
const int maxn=4e5+10;
int b[maxn];
struct node 
{
	int x,id;
}a[maxn];
int fa[maxn],so[maxn];
int cmp(node x,node y)
{
	return x.x>y.x;
}
int main()
{
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&a[i].x);
		a[i].id=i;
		fa[i]=i-1;
		so[i]=i+1;
	}
	sort(a+1,a+n+1,cmp);
	int temp=1;
	for(int i=1;i<=n;i++)
	{
		if(b[a[i].id])	continue; 
		int z=0,j;

		b[a[i].id]=temp;
		for(j=so[a[i].id];j<=n&&z<m;j=so[j])
		{
			if(b[j]==0)
			{
				b[j]=temp;
				z++;
			}
			if(z==m)	break;
		}
		so[a[i].id]=j;		//链表连接 
		
		z=0;
		for(j=fa[a[i].id];j>=1&&z<m;j=fa[j])
		{
			if(b[j]==0)
			{
				b[j]=temp;
				z++;
				
			}
			if(z==m)	break;
		}
		fa[a[i].id]=j;		//链表连接 
		
		if(temp==1)
		{
			temp=2;
		}
		else
			temp=1;
	}
	for(int i=1;i<=n;i++)
	{
		printf("%d",b[i]);
	}
	return 0;
}

 

全部评论

相关推荐

程序员牛肉:你这简历有啥值得拷打的?在牛客你这种简历一抓一大把,也就是个人信息不一样而已。 关键要去找亮点,亮点啊,整个简历都跟流水线生产出来的一样。
点赞 评论 收藏
分享
11-03 13:18
门头沟学院 Java
包行:平时怎么刷算法题的哇,字节的手撕听说都很难
字节跳动工作体验
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务