Non riesco a trovare l’errore nel codice, aldilà del tempo di esecuzione alcuni testcase danno sbagliati, se qualcuno può illuminarmi ne sarei grato. Il codice:
#include <stdio.h>
#include <assert.h>
#include <vector>
#include <algorithm>
#define MAXN 50000
using namespace std;
int N, V, i, k=0, ris;
int prices[MAXN], vouchers[MAXN];
vector<int> pr;
vector<int> vo;
int main() {
freopen("input0.txt", "r", stdin);
freopen("output0.txt", "w", stdout);
assert(2 == scanf("%d %d", &N, &V));
for(i=0; i<N; i++)
{
assert(1 == scanf("%d", &prices[i]));
pr.push_back(prices[i]);
}
for(i=0; i<V; i++)
{
assert(1 == scanf("%d", &vouchers[i]));
vo.push_back(vouchers[i]);
}
sort(pr.begin(), pr.end());
sort(vo.begin(), vo.end());
while((pr.size()!=0)&&(vo.size()!=0))
{
if(pr[0]<=vo[0])
{
vo.erase(vo.begin());
pr.erase(pr.begin());
ris++;
}
else if(pr[0]>vo[0])
{
pr.erase(pr.begin());
}
}
printf("%d\n", ris);
return 0;
}
Prima di tutto ordino i vettori, in caso l’evento possa essere comprato dal ticket elimino tutti e due e aggiorno il risultato, in caso contrario elimino l’evento in quanto, essendo i vettori ordinati ed esaminando il ticket con più valore, l’evento risulta troppo costoso per qualsiasi ticket; tutto ciò finchè uno dei due vettori risulta vuoto.