Rezultati

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

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 0/10 3,406 MiB 0,091 s Napačen odgovor
#2 [več] 0/10 3,703 MiB 0,148 s Napačen odgovor
#3 [več] 10/10 3,762 MiB 0,196 s OK
#4 [več] 0/10 3,410 MiB 0,085 s Napačen odgovor
#5 [več] 0/10 3,207 MiB 0,057 s Napačen odgovor
#6 [več] 0/10 3,418 MiB 0,097 s Napačen odgovor
#7 [več] 10/10 3,762 MiB 0,165 s OK
#8 [več] 10/10 3,785 MiB 0,159 s OK
#9 [več] 10/10 3,121 MiB 0,039 s OK
#10 [več] 10/10 3,801 MiB 0,107 s OK

Ocenjevani program (univerze.cpp):
#include <iostream>
using namespace std;

int u[2][100000];
int n;

void konec(double x) {
	cout << x << " " << 1-x << "\n";
	exit(0);
}

double abss(double a){
	return a<0?-a:a;
}

pair<bool, double> sum(double x, double y) {
	double m = 0;
	bool p = 0;  // 0 je levo
	for (int i = 1; i < n; i++) {
 		double l = x*u[0][i];
		double d = y*u[1][i];
		if (l+d > m) {
			m = l+d;
			p = (l > d) ? 0 : 1;
		}
	}
	if (m < (x*u[0][0] + y*u[1][0]) || abss(m- (x*u[0][0] + y*u[1][0])) < 1e-7) {
		konec(x);
	}
	return make_pair(m, p);
}

int main() {
	cin >> n;
	for (int i = 0; i < n; i++)
		cin >> u[0][i] >> u[1][i];
	double x = 0.5;
	double size = 0.25;
	int it = 30;
	while (it--) {
		pair<bool, double> v = sum(x, 1-x);
		if (v.first == 0) {
			x -= size;
		} else {
			x += size;
		}
		size /= 2;
	}
	cout << "Slabe metrike\n";
	return 0;
}