Aiuto beta release

ciao, avete hint per questo problema? grazie mille
https://training.olinfo.it/#/task/ois_beta/statement

Ovviamente puoi tenere conto in un array di quante volte un numero è uscito. Per farlo ti servirano 2 \cdot 10^9 \text{ bits} = 250 \cdot 10^6 \text{ B}, che è convenientemente meno del limite di memoria del problema.
Ecco un’implementazione in C:

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

int main() {
    int N; scanf("%d", &N);
    unsigned char *skill_issue = calloc(250000000, 1);

    int cnt = 0;
    while (N--) {
        int x; scanf("%d", &x);
        x--;
        switch ((skill_issue[x >> 2] >> 2 * (x & 3)) & 3) {
        case 0: skill_issue[x >> 2] |= (1 << 2 * (x & 3)); break;
        case 1: skill_issue[x >> 2] |= (1 << 2 * (x & 3) + 1); cnt++; break;
        }
    }

    free(skill_issue);
    puts(cnt > 1 ? "YES" : "NO");
}
2 Mi Piace

Ti sei dimenticato di castare a unsigned char * il valore di ritorno di calloc

→ SKILL ISSUE

2 Mi Piace