Subsequence//2010 ACM-ICPC Multi-University Training Contest(10)——Host by HEU
Subsequence
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 28 Accepted Submission(s) : 5
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
There is a sequence of integers. Your task is to find the longest subsequence that satisfies the following condition: the difference between the maximum element and the minimum element of the subsequence is no smaller than m and no larger than k.
Input
There are multiple test cases.
For each test case, the first line has three integers, n, m and k. n is the length of the sequence and is in the range [1, 100000]. m and k are in the range [0, 1000000]. The second line has n integers, which are all in the range [0, 1000000].
Proceed to the end of file.
Output
For each test case, print the length of the subsequence on a single line.
Sample Input
Sample Output
Source
2010 ACM-ICPC Multi-University Training Contest(10)——Host by HEU
#include#include#include#includeusing namespace std;#define maxs( a , b ) a>b?a:b#define mins( a , b ) a>b?b:aconst int MAX_N = 110005;
int d[MAX_N];int dpmin[MAX_N][25];int dpmax[MAX_N][25];int n;
void create_Dpmin(){ int i , j; for( i = 1 ; i <= n ; i++ ) dpmin[i][0] = d[i]; for( j = 1 ; j <= log((double)(n+1))/log(2.0) ; j++ ){ for( i = 1 ; i+(1<int getmax( int a , int b ){ int k = (int)(log((double)(b-a+1))/log(2.0)); return maxs( dpmax[a][k] , dpmax[b-(1<int getmin( int a , int b ){ int k = (int)(log((double)(b-a+1))/log(2.0)); return mins( dpmin[a][k] , dpmin[b-(1<=m&&temp<=k) { int len=i-now+1; if(len>cnt) cnt=len; } else if(temp
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 28 Accepted Submission(s) : 5
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
There is a sequence of integers. Your task is to find the longest subsequence that satisfies the following condition: the difference between the maximum element and the minimum element of the subsequence is no smaller than m and no larger than k.
Input
There are multiple test cases.
For each test case, the first line has three integers, n, m and k. n is the length of the sequence and is in the range [1, 100000]. m and k are in the range [0, 1000000]. The second line has n integers, which are all in the range [0, 1000000].
Proceed to the end of file.
Output
For each test case, print the length of the subsequence on a single line.
Sample Input
5 0 0
1 1 1 1 1
5 0 3
1 2 3 4 5
Sample Output
5
4
Source
2010 ACM-ICPC Multi-University Training Contest(10)——Host by HEU
#include
int d[MAX_N];int dpmin[MAX_N][25];int dpmax[MAX_N][25];int n;
void create_Dpmin(){ int i , j; for( i = 1 ; i <= n ; i++ ) dpmin[i][0] = d[i]; for( j = 1 ; j <= log((double)(n+1))/log(2.0) ; j++ ){ for( i = 1 ; i+(1<