时间限制: 1 Sec 内存限制: 128 MB
提交: 50 解决: 23
[提交][状态]
题目描述
现有一个排列有序的大数组,要求查找一个数是否包含在这个大数组里
输入
输入 m,n,m代表要查找的数,m(0<=10<=2^31),n(0<=n<=1000000) 代表数组的大小,接下来就是n个数。
输出
如果m存在,则输出YES,否则输出NO;
样例输入
8 2 5 6
样例输出
NO
提示
#include<stdio.h>
int main()
{
int ln,x,t,s,i,n,m,p;
static int a[501];
scanf("%d,%d,%d",&n,&m,&p);
for(i=1;i<=n;i++) a[i]=1;
ln=0;x=0;t=0;
while(1)
{
for(s=0,i=1;i<=n;i++)
{
s=s+a[i];
if(s==m) {a[i]=0;s=0;ln++;}
if(ln==p&&x==0) x=i;
if(ln==n-m+1) {t=1;break;}
}
if(t==1) break;
for(s=0,i=n;i>=1;i--)
{
s=s+a[i];
if(s==m) {a[i]=0;s=0;ln++;}
if(ln==p&&x==0) x=i;
if(ln==n-m+1) {t=1; break;}
}
if(t==1) break;
}
for(i=1;i<=n;i++)
if(a[i]!=0) printf("%d ",i);
printf("\n");
printf("%d",x);
return 0;
}