6 条题解

  • 1
    @ 2025-7-9 9:25:53
    #include<iostream>
    #include<cmath>
    #include<queue>
    using namespace std;
    
    const int N = 1e+2;
    
    int arr[N];
    int que[N];
    int head = 0;
    int tail = -1;
    deque<int>dq;  
    
    int main()
    {
    	int n ,k  ;
    	cin >> n >> k;
    	for(int i = 0; i < n; i++)
    		cin >> arr[i];
    	for(int i = 0; i < n; i++)
    	{	
    		while(tail >= head &&  arr[i] <= arr[que[tail]]) 
    			tail --; 
    		que[++ tail] = i;
    		if(i - que[head] >= k) head ++;
    		if(i >= k - 1)
    			cout << arr[que[head]] <<" ";
    	}
    	cout << endl;
    	for(int i = 0; i < n; i ++)
    	{
    		while(!dq.empty() &&  arr[i] >= arr[dq.back()]) 
    		{ 
    			dq.pop_back();
    		}
    		dq.push_back(i);
    		if(i - dq.front() >= k) dq.pop_front();
    		if(i >= k - 1)
    			cout << arr[dq.front()] <<" ";
    	}
    	return 0;
    	
    }
    
    

    信息

    ID
    65
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    递交数
    291
    已通过
    131
    上传者