Aiuto con Mostra di Mojito

Buongiorno, sono relativamente inesperto di C++ e sto provando a risolvere il problema della mostra di Mojito, ecco il codice che ho utilizzato finora:
#include
#include
#include
using namespace std;
int solve()
{
int N,M;
cin>>N>>M;
vector V(N),G(M);
for (int i=0;i<N;i++)
cin>>V[i];
for (int i=0;i<M;i++)
cin>>G[i];
int g=0,v=0,risposta=0;
while (g<M&&v<N)
{
if (G[g]>V[v])
{
g=g+1;
v=v+1;
risposta=risposta+2;
}
else
{
g=g+1;
}
}
while (v<N)
{
v=v+1;
risposta=risposta+1;
}
return risposta;
}
int main()
{
int T,t;
cin>>T;
for(t=1;t<=T;t++)
cout<<“Case #”<<t<<": "<<solve()<<endl;
}
Con questo codice riesco a risolvere i casi d’esempio ed alcuni subtask (max: 2/21), ma non capisco come potrei migliorarlo, qualcuno riesce ad aiutarmi?

La tua soluzione è sbagliata, prova per esempio il seguente caso:

1

2 1
3 1
2
1 Mi Piace

mi da 2… invece dovrebbe dare 3. ora provo a capire dove ho sbagliato, grazie

sono arrivato a scriverlo così:
#include
#include
#include
using namespace std;
/int calc(int v, int g, vector G,vector V, int N, int M)
{
if (g=0||V[v]>G[g])
return (calc(v+1,g,G,V,N,M)+1);
if (v==N&&g==M)
return 0;
else if (G[g]>V[v])
return (calc(g+1,v+1,G,V,N,M)+2);
}
/
int solve()
{
int N,M;
cin>>N>>M;
vector V(N),G(M);
for (int i=0;i<N;i++)
cin>>V[i];
for (int i=0;i<M;i++)
cin>>G[i];
int g=0,v=0,risposta=0;
while (g<M&&v<N)
{
if (G[g]>V[v])
{
g=g+1;
v=v+1;
risposta=risposta+2;
}
else
{
if ((N-v)>(M-g))
{
v=v+1;
risposta=risposta+1;
}
else
{
g=g+1;
}

    }
}
while (v<N)
{
    v=v+1;
    risposta=risposta+1;
}
//risposta=calc(v,g,G,V,N,M);
return risposta;

}
int main()
{
int T,t;
cin>>T;
for(t=1;t<=T;t++)
cout<<“Case #”<<t<<": "<<solve()<<endl;
}

ora fa 7/21… non ho comunque idea di come potrei fare di più però : /