程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Codeforces 474 E. Pillars

Codeforces 474 E. Pillars

編輯:C++入門知識

Codeforces 474 E. Pillars



水過......

E. Pillars time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output

Marmot found a row with n pillars. The i-th pillar has the height of hi meters. Starting from one pillar i1, Marmot wants to jump on the pillarsi2, ..., ik. (1?≤?i1?i2?ik?≤?n). From a pillar i Marmot can jump on a pillar j only if i?j and |hi?-?hj|?≥?d, where |x| is the absolute value of the number x.

Now Marmot is asking you find out a jump sequence with maximal length and print it.

Input

The first line contains two integers n and d (1?≤?n?≤?105, 0?≤?d?≤?109).

The second line contains n numbers h1,?h2,?...,?hn (1?≤?hi?≤?1015).

Output

The first line should contain one integer k, the maximal length of a jump sequence.

The second line should contain k integers i1,?i2,?...,?ik (1?≤?i1?i2?ik?≤?n), representing the pillars' indices from the maximal length jump sequence.

If there is more than one maximal length jump sequence, print any.

Sample test(s) input
5 2
1 3 6 7 4
output
4
1 2 3 5 
input
10 3
2 1 3 6 9 11 7 3 20 18
output
6
1 4 6 7 8 9 
Note

In the first example Marmot chooses the pillars 1, 2, 3, 5 with the heights 1, 3, 6, 4. Another jump sequence of length 4 is 1, 2, 4, 5.


#include 
#include 
#include 
#include 
#include 

using namespace std;

typedef long long int LL;

const int maxn=100100;

int n,K;
LL h[maxn],sum[maxn],tr[maxn];
vector road;

int main()
{
	cin>>n>>K;
	sum[1]=1; int maxl=1;
	for(int i=1;i<=n;i++)
	{
		cin>>h[i];
		sum[i]=1;
		for(int j=max(1,i-500);j=K&&sum[j]+1>sum[i])
			{
				sum[i]=sum[j]+1;
				tr[i]=j;
			}
			if(sum[i]>sum[maxl])
			{
				maxl=i;
			}
		}
	}
	cout<



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved