Problema grattacieli

Ho scritto il programma grattacieli che era presente nelle precedenti olimpiadi di informatica ma quando lo vado ad inserire nelle sottoposizioni mi restituisce: compilazione fallita.
Nel mio compilatore Dev C++ il programma funziona senza problemi e volevo sapere il motivo dell’errore. Grazie in anticipo.
Vi scrivo il codice qui sotto:

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>

long long costruisci(int N, int M, long long* H, int* A, int* B, int* C);

int main() {
	FILE *input,*output;
	size_t i,j;
    input=fopen("input.txt", "r");
    output=fopen("output.txt", "w");

    int n, m;
    fscanf(input,"%d %d", &n, &m);
    long long* h = malloc(sizeof(long long) * n);
    for(i = 0; i < n; i++) {
        fscanf(input,"%d", &h[i]);
    }
    int* a = malloc(sizeof(int) * m);
    int* b = malloc(sizeof(int) * m);
    int* c = malloc(sizeof(int) * m);
    assert(a && b && c);
    for(j = 0; j < m; j++) {
        fscanf(input,"%d %d %d", &a[j], &b[j], &c[j]);
    }
    fprintf(output, "%lld\n", costruisci(n, m, h, a, b, c));
    free(c);
    free(b);
    free(a);
    free(h);
    return 0;
}

long long costruisci(int N, int M, long long* H, int* A, int* B, int* C) {
	const int Nc=N;
    int i,j,k,flag=0,flag2,tot=0; 
    long long hm[Nc];
    for(i=0; i<N; i++){
    	hm[i]=0;
	} 
    do{
    	flag=0;
		for(i=0; i<N; i++){
			if(hm[i]<H[i]){	
				flag2=0;
				for(j=0; j<M; j++){
					if(B[j]==i){
						k=A[j];
						if(hm[i]+1<=hm[k]+C[j]){
							flag2++;
						}
					}
					else{
						flag2++;
					}
				}
				if(flag2==M){
					hm[i]++;
				}
				else{
					flag++;
				}
			}
			else{
				flag++;
			}
		}
	}while(flag<N);
    for(i=0; i<N; i++){
    	tot=tot+hm[i];
	}
    return tot;
}

Nei problemi in cui è richiesto il grader devi sviluppare le funzione richieste (ed eventualmente funzioni accessorie). Non c’è bisogno di includere il main.

Non avevo capito questa cosa del grader infatti. Ora è tutto più chiaro, grazie mille :slight_smile: