hdu4858 (2013杭州邀请赛)

点击打开链接


题意:

少林寺进去一些人,每个人都有对应的id和fight,每个人进去都找跟他fight最近,并且比他早入门的人比武,求每个人比武的对象。。

注意进去人的id是随机的,而且可能有多个人的fight相同。。。。


二分找fight相等的,然后找对应的id。。


#include"stdio.h"
#include"string.h"
#include"algorithm"
using namespace std;
#define N 100005
struct node
{
	int id,fight;
	int tt;
}A[N];

int n;
int B[N];
int T[N];

bool cmp(node a,node b)
{
	if(a.fight!=b.fight)return a.fightx)h=m-1;
		else break;
	}
	int i;
	for(i=m;i<=n+1;i++)
		if(A[i].id==t)return i;
	for(i=m;i>0;i--)
		if(A[i].id==t)return i;
	return -1;
}

int main()
{
	int i,j;
	
	while(scanf("%d",&n)!=-1&&n)
	{
		A[1].id=1;
		A[1].fight=100000000;
		for(i=2;i<=n+1;i++)
		{
			scanf("%d%d",&T[i],&A[i].fight);
			A[i].id=i;
			A[i].tt=T[i];
			B[i]=A[i].fight;
		}
		sort(A+1,A+n+2,cmp);
		/*
		for(i=1;i<=n+1;i++)
			printf("%d %d\n",A[i].id,A[i].fight);
		*/
		int ans;
		printf("%d 1\n",T[2]);
		for(i=3;i<=n+1;i++)
		{
			int t=fun(i);
			int min=1000000111;
			for(j=t-1;j>0;j--)
			{
				if(A[j].idmin)break;
			}
			for(j=t+1;j<=n+1;j++)
			{
				if(A[j].id


你可能感兴趣的:(2013杭州邀请赛,hdu,二分)