Pagini recente »
Istoria paginii runda/9d_lab10
|
Statistici Tudosie Marius-Razvan (TudosieRazvan)
|
Istoria paginii utilizator/mihaistanusoiu
|
2022-03-09-clasa-5-tema-32
|
Cod sursă (job #816367)
Cod sursă (job
#816367)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("infasuratoare.in");
ofstream out ("infasuratoare.out");
#define MAX 100005
int stiva[MAX];
struct pct {
int x,y;
} v[MAX];
bool cmp (pct a, pct b){///sortam dupa tg
return ((a.y+1000000001)*1.0)/((a.x+1000000001)*1.0)>((b.y+1000000001)*1.0)/((b.x+1000000001)*1.0);
}
int main()
{
int n;
in >> n;
for (int i=1; i<=n; i++) {
in >> v[i].x >> v[i].y;
}
sort (v+1,v+1+n, cmp);
for (int i=1; i<=n; i++){
cout << v[i].x << " " << v[i].y << endl;
}
stiva[1]=1;
stiva[2]=2;
int cnt=2;
bool sens=-1;
for (int i=3; i<=n; i++){
if (v[stiva[i-2]].x*v[stiva[i-1]].y+v[i].x*v[stiva[i-2]].y+v[stiva[i-1]].x*v[i].y-v[i].x*v[stiva[i-1]].y-v[stiva[i-2]].x*v[i].y-v[stiva[i-1]].x*v[stiva[i-2]].y>0){
if (sens==1){
stiva[++cnt]=i;
} else {
stiva[cnt]=i;
sens=1;
}
} else if (v[stiva[i-2]].x*v[stiva[i-1]].y+v[i].x*v[stiva[i-2]].y+v[stiva[i-1]].x*v[i].y-v[i].x*v[stiva[i-1]].y-v[stiva[i-2]].x*v[i].y-v[stiva[i-1]].x*v[stiva[i-2]].y<0){
if (sens==0){
stiva[++cnt]=i;
} else {
stiva[cnt]=i;
sens=1;
}
} else {
if ()
}
}
out << cnt << '\n';
for (int i=1; i<=cnt; i++){
out << v[stiva[i]].x << " " << v[stiva[i]].y << '\n';
}
return 0;
}