Sto provendo a risolvere Halloween Candy con i moduli, per risolvere il problema del tempo. Questo e’ il codice che mi sembra dare risultati giusti ma sul sito sbagliati. Qualcuno mi potrebbe dare una mano? Grazie
#include <stdio.h>
#include <assert.h>
// constraints
#define MAXN 100000
// input data
int N;
int C[MAXN];
long long int M, i;
int main() {
assert(2 == scanf("%d %lld", &N, &M));
for(i=0; i<N; i++)
assert(1 == scanf("%d", &C[i]));
i = 0;
M = M % N;
if (M==0) i = 1;
while(M - C[i] > 0) {
M -= C[i];
i++;
if (i == N) i = 0;
}
printf("%lld\n", i); // print the result
return 0;
}
Quello che ho fatto io è stato evitare di simulare la situazione, determinando quanti giri servissero prima di quello finale e all’inizio di quest’ultimo quante fossero le caramelle rimaste.
Dopodiché sapendo che al massimo potevo fare solo un giro andavo a simulare per vedere a chi spettasse l’ultima caramella.
il problema chiede: dopo aver saputo i punteggi di N squadre, quante caramelle saranno necessarie(seguendo tutte le condizioni scritte sul file). Una volta memorizzati tutti i punteggi potresti fare un bel sort, così da sapere per certo che la somma aumenterà in modo costante, ora basta implementare un for (anche while va bene) che fa la somma seguendo tutte le condizioni, ed esce un ciclo del tipo :
for(int i=0;i<n;i++){
if(v[i]!=v[i-1]){
s+=n-i;
}
}