działające przykłady dla zadania na spoju [PP0604A]

0

Posiada ktoś działające zadanie i móglby się podzielić działającymi przykładami, wraz z rozwiązaniami (ile można liczyć samodzielnie xD)? Testy z forum spoja mi działają ale system nadal wywala błędną odpowiedź...

http://pl.spoj.com/problems/PP0604A/ link do zadania.

2
#include <iostream>

using namespace std;

int main() {
	int t;
	cin >> t;

	int ntab[100];
	int answers[100];
	for(int i = 0; i < t; i++)  {
		int n;
		cin >> n;

		double medium = 0;
		for (int i = 0; i < n; i++) {
			cin >> ntab[i];
			medium += ntab[i];
		}
		medium /= n * 1.0;

		double dist = 100;
		for (int a = 0; a < n; a++) {
			double p = medium - ntab[a];
			if (p < 0) p *= -1;
			if (dist > p) {
				answers[i] = ntab[a];
				dist = p;
			}
		}
	}

	for (int i = 0; i < t; i++) {
		cout << answers[i] << endl;
	}
}
0

nie chciałem gotowca lecz jedynie testy... xD porobie te testy na twoim kodzie xD

2

Źle Cię zrozumiałem. Żaden problem napisać programik, który te testy będzie generował ;)

#include <iostream>
#include <time.h>

using namespace std;

int main() {
	srand(time(0));

	int num;
	cout << "Liczba testow do wygenerowania: ";
	cin >> num;	

	cout << endl << num << endl;
	int *answers = new int[num];


	for (int a = 0; a < num; a++) {
		int nums[100];
		int numsCount = 1 + rand() % 100;

		cout << numsCount << " ";

		for (int i = 0; i < numsCount; i++) {
			nums[i] = 1 + rand() % 100;
			cout << nums[i] << " ";
		}

		double medium = 0;
		for (int i = 0; i < numsCount; i++) {
			medium += nums[i];
		}
		medium /= numsCount * 1.0;

		double dist = 100;
		for (int i = 0; i < numsCount; i++) {
			double p = medium - nums[i];
			if (p < 0) p *= -1;
			if (dist > p) {
				answers[a] = nums[i];
				dist = p;
			}
		}
		cout << endl;
	}

	cout << "\nSpodziewana odpowiedz: \n";
	for (int i = 0; i < num; i++) {
		cout << answers[i] << endl;
	}

	delete[] answers;
}
0

Sprawdź może minimalistyczne przykłady, bo o nich zapomnieć:

0

1
0

(tak chyba nie może być w sumei)

1
1 1

odp. 1

1
2 2 2

odp. 2

I upewnij się że dobrze porównujesz floaty.

0
medium /= numsCount * 1.0;
medium = 1.0 * medium / numsCount;

czy na pefno pierwsza i druga linia są równoważne ?

0

tak ciezko sobie sprawdzic?
http://ideone.com/wiMPJ3

0
msm napisał(a):

I upewnij się że dobrze porównujesz floaty.

@msm co masz na myśli pisząc to? Dla tych przykładów, program działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1