입력을 모두 받은 뒤, n보다 작은 첫 수와 n보다 큰 첫 수를 구한다.
각각에서 1을 더하고 뺀 값이 탐색할 범위와 같다.
이 때 n이 집합 안에 있으면 일찍 퇴근시킨다.
구간 [A, B]에서 A에 올 수 있는 건 n보다 작거나 같은 수이다.
for문으로 A를 열어주고, n이 포함되는 경우의 수를 카운트하면 된다.
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
int main() {
int L, n, tmp;
set<int> s;
cin >> L;
for (int i = 0; i < L; i++) {
cin >> tmp;
s.insert(tmp);
}
cin >> n;
int l = 0;
int r = 0;
for (auto i : s) {
if (i == n) {
cout << "0";
return 0;
}
if (i > n) break;
l = max(l, i);
}
for (auto i : s) {
if (i == n) {
cout << "0";
return 0;
}
if (i > n) {
r = i;
break;
}
}
int ans = 0;
for (int i = l + 1; i <= n; i++) {
for (int j = i + 1; j < r; j++) {
if (i < n && j < n) continue;
ans++;
}
}
cout << ans;
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int L, a[50], n;
cin >> L;
for (int i = 0; i < L; i++) cin >> a[i];
cin >> n;
int l = 0;
int r = 1e9;
for (int i = 0; i < L; i++) {
if (a[i] < n) l = max(l, a[i]);
else r = min(r, a[i]);
}
cout << max(0, (n - l) * (r - n) - 1);
return 0;
}
아유 풀려서 다행이다 아직 안굳었구나야
넘의 풀이. 갸는 cstring하고 scanf 써서 메모리가 찌끄맸나봐