Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <cmath>
- #include <iomanip>
- #define MAX1 20
- #define MAX2 1<<20
- #define INFINIT 1E20
- using namespace std;
- ifstream f("smin.in");
- ofstream g("smin.out");
- double s[MAX2];
- int i,j,k,l,m,n,z;
- double tr;
- struct Punct
- {
- int x,y;
- } p[MAX1];
- double Aria(Punct p1,Punct p2,Punct p3) /// dublul ariei triunghiului
- {
- return (p1.x-p2.x)*(p1.y+p2.y)+(p2.x-p3.x)*(p2.y+p3.y)+(p3.x-p1.x)*(p3.y+p1.y);
- }
- int main()
- {
- f>>n;
- for(i=0;i<n;++i)
- f>>p[i].x>>p[i].y;
- m=1<<n;
- s[0]=0.0;
- for(i=1;i<m;++i)
- s[i]=INFINIT;
- for(i=0;i<m;++i)
- for(j=0;j<n;++j)
- for(k=j+1;k<n;++k)
- for(l=k+1;l<n;++l)
- {
- z=i|(1<<j)|(1<<k)|(1<<l);
- tr=fabs(Aria(p[j],p[k],p[l]));
- if (s[z]>s[i]+tr)
- s[z]=s[i]+tr;
- }
- g<<s[m-1]*0.5<<'\n';
- f.close();
- g.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement