Area of Mushroom
题意:

1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 #include <algorithm> 5 #include <cmath> 6 using namespace std; 7 8 const int maxn=510; 9 char res[maxn]; 10 struct Node{ 11 int x,y,v; 12 int vis; 13 int id; 14 Node(){} 15 Node(int x,int y):x(x),y(y){} 16 bool operator < (const Node& a)const { 17 if(v==a.v) return x<a.x||x==a.x&&y<a.y; 18 return v>a.v; 19 } 20 Node operator - (const Node& a){ 21 return Node(x-a.x,y-a.y); 22 } 23 bool operator == (Node a){ 24 return x==a.x&&y==a.y; 25 } 26 }p[maxn],mv[maxn],convex[maxn]; 27 28 int cross(Node a,Node b){ 29 return a.x*b.y-a.y*b.x; 30 } 31 int ConvexHull(int n){ 32 int m=0; 33 for(int i=0;i<n;i++){ 34 while(m>1&&cross(convex[m-1]-convex[m-2],mv[i]-convex[m-2])<0) m--; 35 convex[m++]=mv[i]; 36 } 37 int k=m; 38 for(int i=n-2;i>=0;i--){ 39 while(m>k&&cross(convex[m-1]-convex[m-2],mv[i]-convex[m-2])<0) m--; 40 convex[m++]=mv[i]; 41 } 42 if(n>1)m--; 43 return m; 44 } 45 int main(){ 46 int n,maxv,kase=0; 47 while(scanf("%d",&n)&&n){ 48 maxv=0; 49 for(int i=0;i<n;i++) { 50 scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].v); 51 maxv=max(maxv,p[i].v); 52 p[i].vis=0; 53 p[i].id=i; 54 res[i]='0'; 55 } 56 res[n]='