joj2660
2010-08-10 19:26
204 查看
#include<stdio.h>
int a[30005];
int main(){
int n,m;
while(1){
scanf("%d%d",&n,&m);
if(n==0&&m==0)
break;
int i;
for( i=0;i<=n-1;i++)
scanf("%d",&a[i]);
int sum=1;
for( i=0;i<n-1;i++){
int max=a[i];
int min=a[i];
int list=1,j;
for(j=i+1;j<n;j++){
if(sum>n-i)
break;//此算法是利用了测试 数据的不完整而没超时;因为sum>n-i;break;对于最长子段在最后没有作用!
if(a[j]>max)
max=a[j];
else if(a[j]<min)
min=a[j];
if(max-min>m){
break; //此处给的经验是尽量减少循环中的语句;并且尽量使用berak语句跳出循环!!!
}
list++;
}
if(list>sum)
sum=list;
}
printf("%d/n",sum);
}
return 0;}
int a[30005];
int main(){
int n,m;
while(1){
scanf("%d%d",&n,&m);
if(n==0&&m==0)
break;
int i;
for( i=0;i<=n-1;i++)
scanf("%d",&a[i]);
int sum=1;
for( i=0;i<n-1;i++){
int max=a[i];
int min=a[i];
int list=1,j;
for(j=i+1;j<n;j++){
if(sum>n-i)
break;//此算法是利用了测试 数据的不完整而没超时;因为sum>n-i;break;对于最长子段在最后没有作用!
if(a[j]>max)
max=a[j];
else if(a[j]<min)
min=a[j];
if(max-min>m){
break; //此处给的经验是尽量减少循环中的语句;并且尽量使用berak语句跳出循环!!!
}
list++;
}
if(list>sum)
sum=list;
}
printf("%d/n",sum);
}
return 0;}
相关文章推荐
- joj 2660 河床
- joj 2660 河床
- joj 2660: 河床 求最长区间满足条件(0<=max-min<=k) 单调队列
- joj 1066: Fire Net II
- JOJ 1133 Domino Effect
- JOJ 2241 Nim Matrix
- joj 2568: Think I will Buy Me a Football Team
- joj 1700 棋盘上最多放多少个马 车 王 后
- joj 2284 W-LINE
- joj 1019解题报告
- JOJ 2109 && POJ 1981 Circle and Points 计算几何 单位圆覆盖问题
- HDU 2660 Accepted Necklace DFS || 多重背包
- joj 3760 JLUCPC 树状DP
- JOJ 2558 / HDU 2757 (Ocean Currents) 解题纠错
- joj1035
- joj2243
- joj 2672 Hanoi Tower Once More 有向无环图的最小路径覆盖=N-最大匹配
- joj 1387
- JOJ2026:Divide the Birthday Cake
- joj 2431: Shift and Increment