# Time Limit Exceeded in Cultural Events

**URL:** <https://forum.olinfo.it/t/time-limit-exceeded-in-cultural-events/9260>\
**Category:** Aiuto\
**Created:** [26 Novembre 2024, 8:39pm UTC](https://forum.olinfo.it/t/time-limit-exceeded-in-cultural-events/9260 "2024-11-26T20:39:56Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Nataso08](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/n/b5e925/32.png) [@Nataso08](https://forum.olinfo.it/u/Nataso08)\
**Post date:** [26 Novembre 2024, 8:39pm UTC](https://forum.olinfo.it/t/time-limit-exceeded-in-cultural-events/9260/1 "2024-11-26T20:39:56Z")

</div>

Ciao a tutti.  
Da un paio di giorni sto cercando di risolvere il problema Cultural Events. A parere personale sembrerebbe un problema abbastanza semplice, e allo stesso anche la sua risoluzione. Nonostante ciò, sta di fatto che sto riscontrando time limit exceeded nelle task 2 e 4 nelle subtask 5-6-7, 18-19-20. Il codice mi sembra abbastanza lineare e privo di errori apparenti.  
Qualcuno riuscirebbe a darmi un indizio sull’errore? Grazie

```auto
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

int main() {
// uncomment the following lines if you want to read/write from files
// ifstream cin("input.txt");
// ofstream cout("output.txt");
	
	int N1, N2;
    cin >> N1 >> N2;
    
    int P[N1], V[N2];
    for(int i=0; i<N1; i++)
        cin >> P[i];
    for(int i=0; i<N2; i++)
        cin >> V[i];

    // insert your code here
    int index=0, ans=0;
    
    sort(P, P+N1);
    sort(V, V+N2);
    reverse(P, P+N1);
    reverse(V, V+N2);
    
    for (int i=0; i<N2; i++) {
    	int vo = V[i];
    	int min = *min_element(P+index, P+N1);
    	if (vo >= min) {
    		if (index != N1) {
    			for (int j=index; j<N1; j++) {
    				if (vo >= P[j]) {
    					index = j+1;
    					ans ++;
    					break;
					}
				}
			}
		} else {
			break;
		}
	}
    
    cout << ans << endl; // print the result
    return 0;
}

```

---

<div class="post-metadata">

**Author:** ![MatteoArcari](https://forum.olinfo.it/user_avatar/forum.olinfo.it/matteoarcari/32/1976_2.png) [@MatteoArcari](https://forum.olinfo.it/u/MatteoArcari)\
**Post date:** [26 Novembre 2024, 9:12pm UTC](https://forum.olinfo.it/t/time-limit-exceeded-in-cultural-events/9260/2 "2024-11-26T21:12:33Z")

</div>

`std::min_element` ha complessità lineare in N\_1. Se viene chiamata N\_2 volte, la complessità è O(N\_1N\_2). Prova a sfruttare il fatto che hai ordinato gli array.

---

<div class="post-metadata">

**Author:** ![Nataso08](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/n/b5e925/32.png) [@Nataso08](https://forum.olinfo.it/u/Nataso08)\
**Post date:** [27 Novembre 2024, 7:09am UTC](https://forum.olinfo.it/t/time-limit-exceeded-in-cultural-events/9260/3 "2024-11-27T07:09:16Z")

</div>

Grazie, ora funziona 100/100. Come tuo consiglio ho eliminato la parte relativa a min\_element e, facendo ciò, ho risolto il problema
