Ural 1126. Magnetic Storms

给定一个数组,求M连续的和的最大值。用到的数据结构是单调队列。

#include 
#include 
using namespace std;
struct Node                    
{int value, index;
};                        //存储每个元素的数值和下标
int main()
{int m;scanf("%d", &m);Node node;deque dqN;int num = 0;while (scanf("%d", &node.value) && node.value != -1){node.index = num++;while (!dqN.empty() && dqN.front().index < num - m) dqN.pop_front();while (!dqN.empty() && dqN.back().value < node.value)dqN.pop_back();dqN.push_back(node);if (num >= m)                                         //超出限定的m输出队首元素printf("%d\n", dqN.front().value);}system("pause");return 0;
}



本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部