bzoj1007

来源:互联网 发布:航测无人机软件 编辑:程序博客网 时间:2024/06/14 03:03

靠靠靠调了三节课。。。。

原因是有不适当的使用了continue。。。。

不说了水题直接贴代码。

以后每个题都

#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define read2(x,y) scanf("%d%d",&x,&y)using namespace std;int n;struct wbysr{int a,b,id;}l[50000+9];bool cmp(wbysr a1,wbysr a2){/*if(!a1.a)return false;if(!a2.a)return true;*/if(a1.a!=a2.a)return a1.a<a2.a;return a1.b<a2.b;}double get(wbysr a1,wbysr a2){return double(1.0*(a2.b-a1.b)/(a1.a-a2.a));}bool cmp2(wbysr a1,wbysr a2){return a1.id<a2.id;}int main(){scanf("%d",&n);for(int i=1;i<=n;i++)read2(l[i].a,l[i].b),l[i].id=i;sort(l+1,l+1+n,cmp);wbysr s[50000+10000];int cnt=0,t=1;//for(int i=1;i<=n;i++)printf("%d %d %d\n",l[i].id,l[i].a,l[i].b);cnt=0;for(int i=1;i<=n;i++){if(cnt<=1){//printf("fuck %d %d\n",cnt,l[i].id);while(cnt>0&&l[i].a==s[cnt].a)cnt--;s[++cnt]=l[i];continue;}if(s[cnt].a==l[i].a){//printf("ccf %d %d\n",cnt,l[i].id);while(s[cnt].a==l[i].a)cnt--;//s[++cnt]=l[i];//continue;}//printf("fuck ccf %d %d\n",cnt,l[i].id);wbysr top=s[cnt],top2=s[cnt-1];while(cnt>1&&get(l[i],top)<=get(top,top2))cnt--,top=s[cnt],top2=s[cnt-1];s[++cnt]=l[i];}sort(s+1,s+1+cnt,cmp2);for(int i=1;i<=cnt;i++)printf("%d ",s[i].id);return 0;}

0 0