XYNUOJ 第四次比赛 The Intervals

xiaoxiao2021-02-28  123

问题 F: The Intervals

时间限制: 2 Sec   内存限制: 65 MB [ 提交][ 状态][ 讨论版]

题目描述

Cantor, the famous mathematician, was working on a problem about intervals. Let's start from a line segment of unit length. Remove its middle 1/3. Now remove the middle 1/3's from the remaining two segments. Now remove the middle 1/3's from the remaining four segments. Now remove the middle 1/3's from the remaining eight segments. Now remove ... well, you get the idea. If you could continue this procedure through infinitely many steps, what would you have left? Now he assigns the following task to you. (He asked me to pass his assignment to you last night.) Given two arrays of numbers {A(n)} and {B(m)}. For each B(i) in {B(m)}, find 2 numbers a and b from {A(n)}, such that B(i) is in [a,b) and b-a<=|b'-a'| for all a' and b' from {A(n)} such that [a',b') contains B(i).

输入

There are several test cases. In each test case, the first line gives n and m. The second line contains n numbers, which are the elements of {A(n)}. The third line contains m nubmers, which are the elements of {B(m)}.

输出

For each B(i) in {B(m)}, output a line containing the interval [a,b). If there is no such interval, output "no such interval" instead. Print a blank line after each test case.

样例输入

3 3 10 20 30 15 25 35

样例输出

[10,20) [20,30) no such interval #include<stdio.h> #include<algorithm> using namespace std; int m,n; int a[1000]; int erfen(int k)                 {  int low=0,high=m; int mid; while(low<=high)   {   mid=(low+high)/2;       if(k>=a[mid]&&k<a[mid+1])     return mid;   else if(k<a[mid])         high=mid-1;   else       low=mid+1;     }   return -1;  } int main() {      int q;   int c[1000];   int b[1000];   scanf("%d%d",&m,&n);   for(int i=0;i<m;i++)   scanf("%d",&a[i]);   for(int i=0;i<n;i++)   scanf("%d",&b[i]);         sort(a,a+m);      for(int i=0;i<n;i++)       {   q=0;         q=erfen(b[i]);       if(q==-1)     printf("no such interval\n");       else       printf("[%d,%d)\n",a[q],a[q+1]);    } return 0; }
转载请注明原文地址: https://www.6miu.com/read-63861.html

最新回复(0)