题目链接:
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1266
题解:
这道题目其实很简单,不要想太麻烦。维护一个最小值的最大值就是第一个答案,一直维护最大值就是第二个答案。
代码:
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
ll n,l;
int main()
{
while(cin>>n>>l)
{
ll ans1=0,ans2=0;
for(ll i=0;i<n;i++)
{
ll num;
cin>>num;
ans1=max(min(l-num,num),ans1);
ans2=max(max(l-num,num),ans2);
}
cout<<ans1<<" "<<ans2<<endl;
}
}
本文解析了一个简单的算法题目,通过维护最小值的最大值和一直维护最大值的方法,高效地求解了两个答案。代码使用C++实现,并附带了解题思路。
305

被折叠的 条评论
为什么被折叠?



