Переведите из PascalABC в C++
var p3,h,p,p1: array[1..2000000] of int64;
i,n,j,u,l,kf,x,o,p2:int64;
begin
u:=0;
read(n,x);p2:=0;
for i:=1 to n do read(h[i]);
read(kf);
i:=1;
for i:=1 to kf do begin read(p[i]);
if p[i]=1 then begin n:=n+1;read(h[n]);end;
if p[i]=2 then p2:=p2+1;
if p[i]=3 then begin
u:=u+1;
read(p3[u]);
p3[u]+=1+p2;
l:=0;
for j:=1+p2 to (p3[u]-1) do begin if h[j]>=x then l:=l+1;end;
writeln(l);
end;
end;
end.
Ввод:
1 2
3
5
1 2
1 1
3 0
3 1
3 2
вывод:
0
1
2
Answers & Comments
Объяснение: почти все компиляторы имеют ограничение по оперативной памяти, а программа требует ее в количестве Дохрена , потому пришлось использовать либо вектора либо динамичнские массивы(я выбрал динамические )
#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;
}