Rezultati

Up. imeNalogaJezikRezultatČas oddaje
attempterji-2019 Ocenjevanje univerz C++ 0/100Napačen odgovor (WA) 24. apr '19 @ 17:37

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 0/10 4,074 MiB 0,109 s Napačen odgovor
#2 [več] 0/10 5,066 MiB 0,172 s Napačen odgovor
#3 [več] 0/10 5,063 MiB 0,226 s Napačen odgovor
#4 [več] 0/10 3,969 MiB 0,103 s Napačen odgovor
#5 [več] 0/10 3,480 MiB 0,044 s Napačen odgovor
#6 [več] 0/10 4,074 MiB 0,096 s Napačen odgovor
#7 [več] 0/10 4,977 MiB 0,183 s Napačen odgovor
#8 [več] 0/10 5,074 MiB 0,189 s Napačen odgovor
#9 [več] 0/10 3,328 MiB 0,027 s Napačen odgovor
#10 [več] 10/10 4,980 MiB 0,155 s OK

Ocenjevani program (upm_2019_1_uni.cpp):
#include <iostream>
#include <vector>
#include <cstring>
#include <sstream>
#include <algorithm>

using namespace std;

struct UN {
	int a, b;
	double k;
};

bool uredi(const UN a, const UN b) {
	return a.k > b.k;
}

int main() {
	int n, a, b, a1, b1;
	cin >> n;
	cin >> a >> b;
	vector<UN> uni;
	for (int i = 1; i < n; ++i) {
		cin >> a1 >> b1;
		UN univ;
		univ.a = a1;
		univ.b = b1;
		uni.push_back(univ);
	}

	double x = 0.5, x1, xPrejZg, xPrejSp, k;

	for (auto &i : uni) {
		i.k = x * (double)(i.a - i.b) + (double)i.b;
	}

	sort(uni.rbegin(), uni.rend(), uredi);
	k = x * (double)(a - b) + (double)b;

	int bb = 0; 

	xPrejZg = 0;
	xPrejSp = 1;

	while (uni[0].k > k) {
		bb++;
		if (b % 2 == 0) {
			x1 = x;
			x1 = (x1 + xPrejZg) / 2;
			for (auto &i : uni) {
				i.k = x1 * (double)(i.a - i.b) + (double)i.b;
			}
			sort(uni.rbegin(), uni.rend(), uredi);
			xPrejZg = x1;
		}
		else {
			x = (x + xPrejZg) / 2;
			for (auto &i : uni) {
				i.k = x * (double)(i.a - i.b) + (double)i.b;
			}
			sort(uni.rbegin(), uni.rend(), uredi);
			xPrejSp = x;
		}
		if (bb > 32) {
			cout << "Slabe metrike";
			break;
		}
			
	}

	if(bb <= 32){
		cout << x << " " << (1 - x);
	}

	return 0;
}