最大区间问题 |
Time Limit: 1 Seconds Memory Limit: 32768 K Total Submit:70 Accepted:12 |
Description 给你两个数N,M。(1 ≤ N,M ≤ 5000). Input 第一行N,M Output 只有一行,对于每一次询问,输出最长的满足要求的区间长度。 Sample Input 9 2 2 5 4 1 2 3 6 2 4 0 8 2 6
Sample Output 6 5
Hint 0到8 这9个数满足要的的区间是'5 4 1 2 3 6',该区间长度最大,而且没有两个的数是相同的。 |
此题不能说难,但也要一定的思维哦~~
Source: #include<stdio.h> int main() { int i,j,n,m,x,y,sum,max,b[5001]={0}; long a[5001]; scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%ld",&a[i]); for(i=0;i<n;i++) for(j=i-1;j>=0;j--) if(a[i]==a[j]) { b[i]=j+1; break; } while(m--) { scanf("%d%d",&x,&y); sum=0;max=0; for(i=x;i<=y;i++) { if(b[i]!=0&&b[i]>x) { if(sum>max) max=sum; else { sum=i-b[i]; x=b[i]; } } sum++; if(sum>max) max=sum; } printf("%d/n",max); } return 0; }
|