|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1000005;
- int a[N];
- deque<int> q;
- int main()
- {
- int n,m;scanf("%d%d",&n,&m);
- for(int i = 1;i<=n;i++)scanf("%d",&a[i]);
- for(int i=1;i<=n;i++){
- while(!q.empty() && a[q.back()]>a[i]) q.pop_back();
- q.push_back(i);
- if(i>=m){
- while(!q.empty() && q.front()<=i-m) q.pop_front();
- printf("%d",a[q.front()]);
- }
- }
- printf("\n");
- while(!q.empty()) q.pop_front();
- for(int i=1;i<=n;i++)
- {
- while(!q.empty() && a[q.back()]<a[i]) q.pop_back();
- q.push_back(i);
- if(i>=m){
- while(!q.empty() && q.front()<=i-m) q.pop_front();
- printf("%d",a[q.front()]);
- }
- }
- printf("\n");
- return 0;
- }
复制代码
这段代码的问题在于在输出结果时没有添加空格。在每次输出结果之后,应该添加一个空格,否则会导致格式错误。在两个地方都需要添加空格,分别是在 printf("%d",a[q.front()]); 之后和 printf("%d",a[q.front()]); 之后。修改后的代码如下:
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1000005;
- int a[N];
- deque<int> q;
- int main()
- {
- int n,m;scanf("%d%d",&n,&m);
- for(int i = 1;i<=n;i++)scanf("%d",&a[ i]);
- for(int i=1;i<=n;i++){
- while(!q.empty() && a[q.back()]>a[ i]) q.pop_back();
- q.push_back(i);
- if(i>=m){
- while(!q.empty() && q.front()<=i-m) q.pop_front();
- printf("%d",a[q.front()]);
- if(i<n) printf(" "); // 添加空格
- }
- }
- printf("\n");
- while(!q.empty()) q.pop_front();
- for(int i=1;i<=n;i++)
- {
- while(!q.empty() && a[q.back()]<a[ i]) q.pop_back();
- q.push_back(i);
- if(i>=m){
- while(!q.empty() && q.front()<=i-m) q.pop_front();
- printf("%d",a[q.front()]);
- if(i<n) printf(" "); // 添加空格
- }
- }
- printf("\n");
- return 0;
- }
复制代码
这样修改后,输出结果之间会有一个空格,符合预期格式。
|
|