Z czym Masz dokładnie problem. Pokaż co Robisz.
Skończone, jeżeli masz czas i ochotę chciałbym prosić Ciebie o ocenienie i powiedzenie co jest źle bo mi SPOJ tego nie przyjmuje... Cały czas "Przekroczenie limitu czasu" który wynosi 5s... Na komputerze robi mi się to w ułamki sekund jak dam zadeklarowane dane.
Zapomniałem link do zadania https://pl.spoj.com/problems/TRNGLFLD/
#include <iostream>
#include <vector>
using namespace std;
//Struktura danych i operatory
struct dane_wspolrzedne
{
int pkt_id,x,y;
};
vector <dane_wspolrzedne> v_wspol;
//Szukanie Xmin,Xmax,Ymin,Ymax
void szukanie(int a)
{
int Xmax=v_wspol[0].x;
int Xmin=v_wspol[0].x;
int Ymax=v_wspol[0].y;
int Ymin=v_wspol[0].y;
for(int i=0; i<a; i++){
if(Xmax<v_wspol[i].x){
Xmax=v_wspol[i].x;
}
if(Xmin>v_wspol[i].x){
Xmin=v_wspol[i].x;
}
if(Ymax<v_wspol[i].y){
Ymax=v_wspol[i].y;
}
if(Ymin>v_wspol[i].y){
Ymin=v_wspol[i].y;
}
}
//Sprawdzanie ktore punkty sa wysuniete
int z=0,punkty[3]={0,0,0};
for(int i=0; z<3; i++)
{
if((v_wspol[i].x==Xmax)||(v_wspol[i].x==Xmin)||(v_wspol[i].y==Ymax)||(v_wspol[i].y==Ymin))
{
punkty[z]=v_wspol[i].pkt_id;
z++;
v_wspol.erase(v_wspol.begin()+i);
i--;
}
}
for(int i=0; i<3; i++)
{
cout<<punkty[i]<<" ";
}
//Deklaracja rekurencyjnosci
int b=a-3;
if(b>2)
{
cout<<endl;
cout<<endl;
szukanie(b);
}
}
//Wprowadzanie danych
void wprowadzanie()
{
dane_wspolrzedne w;
int punkty;
cin>>punkty;
if((punkty%3)==0)
{
for(int i=0; i<punkty; i++)
{
w.pkt_id=i+1;
cin>>w.x>>w.y;
v_wspol.push_back(w);
}
}
else
{
cout<<"Trójkat nie moze miec innej liczby wierzcholków niz 3:)"<<endl;
wprowadzanie();
}
szukanie(punkty);
}
int main()
{
int proby;
cin>>proby;
while(proby!=0)
{
wprowadzanie();
proby--;
}
return 0;
}