Объяснение: почти все компиляторы имеют ограничение по оперативной памяти, а программа требует ее в количестве Дохрена , потому пришлось использовать либо вектора либо динамичнские массивы(я выбрал динамические )
#include <iostream>
using namespace std;
int main()
{
long long *p = new long long[2000000];
long long *p1 = new long long[2000000];
long long *p3 = new long long[2000000];
long long *h = new long long[2000000];
long long n, u{0}, kf, x, o, p2{0};
cin >> n >> x; //n=1 x=2
for (long i = 0; i < n; i++)
cin >> h[i]; //=3
cin >> kf; //=5
for (long i = 0; i < kf; i++)
{
cin >> p[i];
if (p[i] == 1)
cin >> h[n++];
if (p[i] == 2)
p2++;
if (p[i] == 3)
{
long long l{0};
cin >> p3[u];
p3[u] += p2 + 1;
for (long long j = p2; j < p3[u] - 1; j++)
if (h[j] >= x)
l++;
u++;
cout << l << endl;
};
};
delete[] p, p1, p3, h;
}
Поделитесь своими знаниями, ответьте на вопрос:
На числовой прямой даны два отрезка: P=[30, 68] и Q=[10, 50].Отрезок А таков, что формула ¬(x∈ A)→((x∈ P) →¬( x∈Q)) Истина при любом значение переменной x Какая наименьшая возможная длина отрезка А
Введем обозначения:
(x ∈А) ≡ A; (x ∈ P) ≡ P; (x ∈ Q) ≡ Q.
Преобразовав, получаем:
¬A → (¬P ∨ ¬Q) = A ∨ ¬P ∨ ¬Q.
Логическое ИЛИ истинно, если истинно хотя бы одно утверждение. Логическое И истинно, когда истинны оба утверждения. Условию ¬P ∨ ¬Q = 1 удовлетворяют лучи (−∞; 30) и (50; +∞). Поскольку выражение A ∨ ¬P ∨ ¬Q должно быть тождественно истинным, выражение A должно быть истинно на отрезке [30, 50]. Следовательно, наименьшая длина отрезка А равна 50 − 30 = 20.