#include<iostream> #include<cmath> #include<algorithm> #include<vector> using namespace std; int main() { int n; cin >> n; vector<double> a(n); cin >> a[0]; bool flag = 0; double du = a[0] + 180; int index; for (int i = 1; i < n; i++) { scanf("%lf", &a[i]); //cin >> a[i]; 这里只能通过60% if (flag) continue; if (a[i] > du) { flag = 1; index = i; } } if (flag == 0) { printf("%.8f", a[n - 1] - a[0]); return 0; } double res = a[index-1] - a[0]; int j = index; for (int i = 0; i < index; i++) { if (j == n - 1) { double tmp = a[j] - a[i]; if (tmp > 180) tmp = 360 - tmp; res = max(res, tmp); } else { double tmp = a[j] - a[i], tr = tmp; while (tmp <= 180 && j<n - 1) { tr = tmp; j++; tmp = a[j] - a[i]; } if(tmp>180) tmp = 360 - tmp; if (tr > 180) tr = 360 - tr; tr = max(tr, tmp); if (tr > res) res = tr; } } res = max(res, a[n - 1] - a[index]); printf("%.8f", res); return 0; } 复杂度O(n)
点赞 评论

相关推荐

04-17 10:16
门头沟学院 Java
小浪_coder:24届很难找了,马上25的都毕业了还有很多没找到的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务