uva1382

来源:互联网 发布:node sass dose not 编辑:程序博客网 时间:2024/06/06 00:23
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;struct node{  int x,y;  bool operator<(const node &s){    return x<s.x;  }}t[200];int ny[200],n,lef[200],on[200],on1[200];int solve(){  int i,j;  sort(ny,ny+n);  sort(t,t+n);  int ans=0;  int m=unique(ny,ny+n)-ny;  if(m<=2)  return n;  for(i=0;i<m;i++)  for(j=i+1;j<m;j++){    int miny=ny[i];int maxy=ny[j];memset(lef,0,sizeof(lef));memset(on,0,sizeof(on));memset(on1,0,sizeof(on1));int k=-1,r;for(r=0;r<n;r++){if(!r||t[r].x!=t[r-1].x)k++;lef[k]=k==0?0:lef[k-1]+on1[k-1]-on[k-1];if(t[r].y>miny&&t[r].y<maxy)on[k]++;if(t[r].y>=miny&&t[r].y<=maxy)on1[k]++;}if(k<=1)return n;int max=0;for(r=0;r<=k;r++){ans=ans>lef[r]+on1[r]+max?ans:lef[r]+on1[r]+max;max=max>on[r]-lef[r]?max:on[r]-lef[r];}  }  return ans;}int main(){int ss=0;while(cin>>n&&n){int i;for(i=0;i<n;i++){  scanf("%d%d",&t[i].x,&t[i].y);ny[i]=t[i].y;}printf("Case %d: %d\n",++ss,solve());   }return 0;}

0 0
原创粉丝点击