spj 公示,欢迎挑错

Star 2022-08-26 16:08:58

#include <stdio.h>
#include <stdlib.h>
#define N 100

int gcd(int a, int b) {
    return b ? gcd(b, a % b) : a;
}

int valid(int *h, int *t) {
    for (; h < t; ++h) {
        for (int *i = h + 1; i < t; ++i) {
            if (gcd(*i, *h) != 1) return 0;
        }
    }
    return 1;
}

int getd(int *h, int *t, int *p) {
    int d = 0;
    for (; h < t; ++h, ++p) {
        d += abs(*h - *p);
    }
    return d;
}

int main() {
    FILE *input = fopen("input", "r");
    FILE *user_out = fopen("user_out", "r");
    FILE *answer = fopen("answer", "r");
    int std_input[N], std_output[N], user_output[N];
    int i, n;
    fscanf(input, "%d", &n);
    for (i = 0; i < n; ++i) {
        fscanf(input, "%d", std_input + i);
    }
    for (i = 0; i < n; ++i) {
        fscanf(answer, "%d", std_output + i);
    }
    for (i = 0; i < n; ++i) {
        fscanf(user_out, "%d", user_output + i);
    }
    if (valid(user_output, user_output + n)) {
        int d1 = getd(std_output, std_output + n, std_input);
        int d2 = getd(user_output, user_output + n, std_input);
        if (d1 == d2) {
            fprintf(stdout, "100\n");
            fprintf(stderr, "OK\n");
        }
        else {
            fprintf(stdout, "0\n");
            fprintf(stderr, "Not the best\n");
        }
    }
    else {
        fprintf(stdout, "0\n");
        fprintf(stderr, "Invalid sequence.\n");
    }
    return 0;
}