이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<iostream>
#include<vector>
#include<algorithm>
#include<unordered_set>
#define int long long
#define MOD 1000000007
using namespace std;
signed main() {
int n;
cin >> n;
vector<int>v(n);
int ans = 0;
for (auto &i : v) cin >> i;
int i = 1, j = n-2;
int left = v[i-1] - v[i], right = v[j+1] - v[j];
while (i+1 < j) {
while (left < 0 && i+1 < j) {
i++;
left= v[i-1] - v[i];
}
while (right < 0 && i+1 < j) {
j--;
right = v[j+1] - v[j];
}
if (left < 0 || right < 0) break;
if ((left < right|| right < 0) && left >= 0) {
ans += left + 1;
//cout << left+1 << " " << i << " " << j << "\n";
right -= (left+1);
left = -1;
} else if (right >= 0){
ans += right + 1;
//cout << right+1 << " " << i << " " << j << "\n";
left -= (right+1);
right = -1;
}
}
if (v[i] <= v[j]) {
if (left >= 0) ans += min(left+1, v[j] - v[i] + 1);
}
//if (v[i] == v[j]) ans++;
cout << ans /*<< " " << left << " " << right*/ <<"\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |