Rezultati

Up. imeNalogaJezikRezultatČas oddaje
lisperator-2017 Črte C++ 0/100Prekoračen čas (TLE) 20. apr '17 @ 18:57

Test Točke Porabljen spomin Porabljen čas Status
#1 10/10 3,023 MiB 0,004 s OK
#2 10/10 3,156 MiB 0,004 s OK
#3 10/10 3,223 MiB 0,010 s OK
#4 10/10 22,359 MiB 0,494 s OK
#5 0/10 367,445 MiB 11,052 s Prekoračen čas
#6 0/10 6,148 MiB 1,105 s Napačen odgovor
Tvoj izhod:
​-252017864
<<<EOF>>>
Pravilen izhod:
​2591567982003000
<<<EOF>>>
#7 0/10 6,152 MiB 1,203 s Napačen odgovor
Tvoj izhod:
​20056151470
<<<EOF>>>
Pravilen izhod:
​20382496101806
<<<EOF>>>
#8 0/10 6,129 MiB 1,617 s Napačen odgovor
Tvoj izhod:
​275528491361
<<<EOF>>>
Pravilen izhod:
​1441612112225
<<<EOF>>>
#9 10/10 6,668 MiB 3,530 s OK
#10 0/10 406,754 MiB 10,957 s Prekoračen čas

Ocenjevani program (Source (8).cpp):
#include <iostream>
#include <algorithm>
#include <unordered_map>
#include <string>
#include <sstream>

using namespace std;

struct Point
{
	int x;
	int y;
};

int main()
{
	int N;
	cin >> N;
	unordered_map<int, int> lengths;
	Point* points = new Point[N];
	lengths.reserve(N * 32);

	for (int i = 0; i != N; i++)
	{
		Point pt;
		cin >> pt.x >> pt.y;
		points[i] = pt;
	}

	for (int i = 0; i != N; i++)
	{
		for (int j = i + 1; j < N; j++)
		{
			int length = (points[i].x - points[j].x)*(points[i].x - points[j].x) + (points[i].y - points[j].y)*(points[i].y - points[j].y);
			lengths[length]++;
			//cout << length << "\t";
		}
		//cout << endl;
	}

	long long sum = 0;
	for (auto it : lengths)
	{
		if (it.second != 1)
			sum += (it.second * (it.second - 1)) / 2;
	}
		
	cout << sum << endl;

	//system("pause");
	return 0;
}