Witam,
ostatnio próbowałam rozwiązać zadanie ze
szkopuła
#include <stack>
#include <iostream>
using namespace std;
int licz;
int tab[2000005];
int n,m,k, l;
stack<int>liczba;
int main()
{
cin>>n>>m;
for (int i=0;i<n;i++)
{
cin>>l;
if (i>0){
if(l>liczba.top())
{l=liczba.top();}}
liczba.push(l);
}
for (int i=0;i<m;i++)
{
cin>>tab[i];}
for (int i=0;i<m;i++){
if(liczba.empty()){
cout<<0;
return 0;}
else{
if(tab[i]>liczba.top())
{
while(tab[i]>liczba.top())
{
liczba.pop();}
if(liczba.empty())
{break;}
}
if(tab[i]<=liczba.top())
{
liczba.pop();
}}
}
if(liczba.empty())
cout<<0;
else
cout<<liczba.size()+1;
return 0;
}
powyższy kod niestety przekracza limit czasu i w drugim teście wstępnym jest błąd wykonania.
Czy mógłby mi ktoś doradzić, jak poprawić kod?