Cod sursa(job #3332326)

Utilizator ValiAntonieqxcfds ValiAntonie Data 6 ianuarie 2026 02:27:07
Problema Elementul majoritar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include <bits/stdc++.h>

using namespace std;

float score = 0;

void result(const char* msg, float pts) {
    //"{score}" to stdout
    //"{message}" to stderr
    // score is a float between 0 and 1
	printf("%f", pts);
    fprintf(stderr, "%s", msg);
	exit(0);
}

void Assert(bool cond, string str) {
	if (!cond)
		result(str.c_str(), 0);
}
void Success(float pts, string str) {
	result(str.c_str(), pts);
}

ifstream out, ok, in;

int main(int argc, char* argv[]) {
    string message;
	in.open(argv[1]); // test input; assumed to be valid
	ok.open(argv[2]); // correct output
	out.open(argv[3]); // user output
    int nrdiv1 = 0, nrdiv2 = 0;
    unsigned long long val = 0;
	ok >> nrdiv1;
    out >> nrdiv2 >> val;
    int nrdiv = 0;
    for (unsigned long long d = 1; d * d <= val; d++){
        if (val % d == 0){
            nrdiv++;
            if (d * d < val)
                nrdiv++;
        }
    }
    if (nrdiv1 == nrdiv2 && nrdiv1 == nrdiv){
        score += 1;
        message += "Corect";
    }
    else if (nrdiv1 == nrdiv2 && nrdiv1 != nrdiv){
        message += "Prima cerință este corectă, dar a doua este incorectă!";
        score += 0.5;
    }
    else{
        message += "Incorect";
    }
    Success(score, message);
}