Проблема решена, но шеф-повар код нужно оптимизировать благодаря БА .
Шеф-повар имеет N параллельных осям прямоугольников в 2D декартовой системе координат. Эти прямоугольники могут пересекаться, но гарантируется, что все их 4N вершин попарно различны.
К сожалению, шеф-повар потерял одну вершину, и до сих пор ни одно из его исправлений не сработало (хотя поместить изображение точки на пакет молока, возможно, было не самой лучшей идеей в конце концов...). Поэтому он дал вам задание найти его! Вам дается оставшееся 4N−1 очко, и вы должны найти недостающее.
Ввод
Первая строка входных данных содержит одно целое число T, обозначающее количество тестовых случаев. Описание тестов t следующим образом.
Первая строка каждого тестового набора содержит одно целое число N.
Затем следуют строки 4N−1. Каждая из этих строк содержит два целых числа x и y,разделенных пробелами и обозначающих вершину (x, y) некоторого прямоугольника.
Выход
Для каждого теста выведите одну строку, содержащую два целых числа через пробел X и Y-координаты недостающей точки. Можно доказать, что недостающую точку можно определить однозначно.
Ограничения
T≤100
1≤N≤2⋅105
|x|,|y|≤109
сумма N по всем тестовым случаям не превышает 2⋅105
Подзадачи
Подзадача № 1 (20 баллов):
T=5
N≤20
Подзадача №2 (30 баллов): |x|,|y|≤105
Подзадача № 3 (50 баллов): исходные ограничения
Пример Ввода
1
2
1 1
1 2
4 6
2 1
9 6
9 3
4 3
Пример Вывода
2 2
Объяснение
Исходный набор точек таков:
рис. 1
При добавлении недостающей точки (2,2) можно сформировать N=2 прямоугольника:
рис. 1
Что я уже пробовал:
#include <iostream> using namespace std; void quicksort(long int number[],long int n) { int i,j,a; for (i = 0; i < n; ++i) { for (j = i + 1; j < n; ++j) { if (number[i] > number[j]) { a = number[i]; number[i] = number[j]; number[j] = a; } } } } int main(void) { // your code goes here long int n,i,j,k,rx,ry; cin>>n; for(i=0;i<n;i++) { cin>>k; long int x[4*k-1],y[4*k-1]; for(j=0;j<4*k-1;j++) { cin>>x[j]>>y[j]; } quicksort(x,4*k-1); quicksort(y,4*k-1); int flagx=0,flagy=0; for(j=0;j<4*k-1;j=j+2) { if(!flagx||!flagy) { if(!flagx) { if(x[j]!=x[j+1]) { rx=x[j]; flagx=1; }} if(!flagy) { if(y[j]!=y[j+1]) { ry=y[j]; flagy=1; }} } else {break;} } cout<<rx<<" "<<ry<<endl; } return 0; }
Richard MacCutchan
В чем же вопрос?
OriginalGriff
- Ты можешь написать ее для меня?"
Просто предположение ...
Richard MacCutchan
Вероятнее всего.
sanskar srivastava
добавлена ссылка на вопрос идите и проверьте пожалуйста
Richard MacCutchan
Это не вопрос.
sanskar srivastava
вы можете посетить и проверить ссылку, пожалуйста, она находится внизу.
Richard MacCutchan
У меня нет намерения посещать какие-либо ссылки. Если вы хотите помочь с вашей проблемой, то, пожалуйста, используйте Улучшить вопрос ссылка выше, и добавить полную информацию.
sanskar srivastava
хорошо, весь вопрос здесь с образцом ввода-вывода
Patrice T
Ваш код был поврежден при копировании.
sanskar srivastava
спасибо за помощь.
Rick York
Одна рекомендация : научитесь считывать данные из файла, чтобы вам не приходилось каждый раз вводить их вручную. Это даст вам гораздо больше времени для отладки кода и обеспечения его правильной работы.