1064.cpp

来自「平时acm训练时ac的源代码」· C++ 代码 · 共 79 行

CPP
79
字号
#include <iostream.h>
int bi ,bl;
int A[10001];
void bsearch(int x ,int N);
int main()
{
	int I,L,N;
	int j,flag,min,max,num,ok,k;
	int b[10002]={0};
	cin>>I>>L;

	for(j=0;j<10001;j++)
		A[j]=j;
	for(N=I;N<10001;N++)
	{
		bi=0;
		bl=0;
		bsearch(I,N);
		if(bi==I&&bl==L) b[N]=1;
	}
	num=0;
	for(j=0;j<10001;j++)
	{	
		if(b[j]==1) 
		{
			if(b[j+1]==0) num++;
		}
	}
	cout<<num<<endl;
	ok=0;
	for(k=0;k<num;k++)
	{
	flag=0;
	for(j=0;j<10001;j++)
	{
		if(b[j]==1&&flag==0)
		{
			min=j;
			if(b[j+1]==1) b[j]=0;
			flag=1;
		}
		if(b[j]==1&&flag==1)
			if(b[j+1]==0) 
			{
				max=j;
				b[j]=0;
				ok=1;
			}
			else b[j]=0;
		if(ok)
		{
			cout<<min<<' '<<max<<endl;
			ok=0;
			break;
		}
	}
	}	
}

void bsearch(int x ,int N)
{
  int p, q;

  p = 0;   /* Left border of the search  */
  q = N-1; /* Right border of the search */
  bl = 0;   /* Comparison counter         */
  while (p <= q) {
    bi = (p + q) / 2;
    ++bl;
    if (A[bi] == x) {
      return;
    }
    if (x < A[bi])
      q = bi - 1;
    else
      p = bi + 1;
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?