Salve, sto cercando di completare raid - tantrum with consequences, ma mi dà soltanto 60/100 poichè il mio codice supera gli 0.8s (facendone 0.9s).
Quali potrebbero essere modi per renderlo più veloce?
In pratica il mio codice per ogni P (con P <= N) cerca i valori che soddisfano la condizione e li trasforma in 0 dopo essere passati al valore successivo. Se in un passaggio totale di P non c’è stato alcun cambio esco dal ciclo e mando a video.
Ogni consiglio è apprezzato, grazie in anticipo
Codice:
#include iostream>
#include vector>
using namespace std;
int main(){
unsigned int n, p, temp, cont = 1, c = 1, ris = 0, l, diff = 0;
cin >> n >> p;
vector<unsigned int> a, b;
a.push_back(0);
while (cont < n +1){
(void)scanf("%d", &temp);
a.push_back(temp);
cont++;
}
if (p > n) p = n;
a.push_back(0);
temp = 0, l = 0;
for (cont = 2; cont <= n; cont++){
if (a[cont] > a[cont - 1]) temp++;
if (a[cont] < a[cont - 1]) l++;
}
if (temp == (n-1) || l == (n-1)){
printf("%d", p);
}
else{
l = 0;
for (cont = 0; cont < p; cont++){
for (c = 1; c <= n; c++){
if (a[c] > a[c - 1] && a[c] > a[c + 1]){
a[l] = 0;
ris++;
diff++;
l = c;
}
}
a[l] = 0;
l = 0;
if (diff == 0) break;
else diff = 0;
}
printf("%d", ris);
}
}