#include #include #include using namespace std; int main() { int n, x; cin >> n >> x; int a[200001]; long long sum = 0; for (int i = 0; i < n; ++i) { cin >> a[i]; sum += a[i]; } sort(a, a + n); long long c = 600000000LL * (n - 1) + a[0] + a[n - 1] - sum; if(c<a[0]) { cout<<x<<endl; } else if(c>a[n-1]){ cout<<-1<<endl; } else { if(c<x) cout<<x<<endl; else cout<<c<<endl; } }
核心思路:首先通过公式计算出满足条件2的最小的分数X,然后看它如果大于a[n-1],那肯定不符合条件;如果小于a[0],那就是任意都可以;如果是在区间内,那就判断和x的关系,如果比x大,那就输出c,否则输出x,就是要时时刻刻把握住第二条,满足第三条。

京公网安备 11010502036488号