Rezultati

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

Test Točke Porabljen spomin Porabljen čas Status
#1 [več] 0/10 3,063 MiB 0,048 s Napačen odgovor
#2 [več] 0/10 3,531 MiB 0,063 s Napačen odgovor
#3 [več] 10/10 2,590 MiB 0,000 s OK
#4 [več] 0/10 3,094 MiB 0,024 s Napačen odgovor
#5 [več] 0/10 2,852 MiB 0,026 s Napačen odgovor
#6 [več] 0/10 3,098 MiB 0,042 s Napačen odgovor
#7 [več] 10/10 3,539 MiB 0,073 s OK
#8 [več] 10/10 3,535 MiB 0,061 s OK
#9 [več] 0/10 2,813 MiB 0,009 s Napačen odgovor
#10 [več] 10/10 2,590 MiB 0,064 s OK

Ocenjevani program (univerze.cpp):
#include<vector>
#include<stdio.h>
#include<algorithm>

using namespace std;


struct p{
	int x,y;
	bool operator<(const p&a) const {
		return x< a.x;
	}
};

vector<p> pts;

double k(p a, p b){
	return (a.y-b.y)/(a.x-b.x);
}


int lx,rx;
int main(){
	int n;
	scanf("%d", &n);
	p t;
	scanf("%d%d", &t.x, &t.y);
	n--;
	int ex=0;
	for(int i=0;i<n;i++){
		p tt;
		scanf("%d%d",& tt.x,& tt.y);
		if(tt.x> t.x && tt.y > t.y) {
			printf("Slabe metrike\n");
			return 0;
		}
		if(tt.y > t.y && tt.x < t.x) {
			lx++;
			pts.push_back(tt);
		}
		if(tt.x > t.x && tt.y <= t.y){
		   	rx++;
			pts.push_back(tt);
		}
		if(tt.x == t.x && t.y < tt.y) ex =1;
	}
	if(rx && ex){
		printf("Slabe metrike\n");
		return 0;
	}
	if(!lx){
		printf("%lf %lf\n", 0., 1.);
		return 0;
	}
	if(!rx){
		printf("%lf %lf\n", 1., 0.);
		return 0;
	}
	sort(pts.begin(), pts.end());
	double opt=0.;

	for(int i=0;i<pts.size();i++){
		//printf("res: %lf curr:%lf\n", opt,  k(pts[i], t));
		if(pts[i].x<t.x){
			opt = min(opt, k(pts[i], t));
		}
	}
	double res = opt;
	for(int i=0;i<pts.size();i++){
		if(pts[i].x > t.x && k(t, pts[i]) - res > 1e-6) {
			printf("Slabe metrike\n");
			return 0;
		}
	}
	printf("%lf %lf\n", -res /(1-res), 1- (-res) /(1-res));
	return 0;
}