Codeforces Round #477 (rated, Div. 1, based on VK Cup 2018 Round 3) A. Stairs and Elevators

题目
题意:给出n层楼,每层m个房间,楼梯和电梯的分布这样的(1,x),(2,x)…,(n,x),1<=x<=m,楼梯c1,电梯c2,电梯的速度为v。给出起始点和终点,问最快的速度。
解法:其实很简单,算出走楼梯和电梯的四种情况,然后取最小值即可,记得同一楼层的情况。
状态不好,写了一堆bug

#include
using namespace std;
const int inf=0x3f3f3f3f;
const int maxn=1e5+10;
int n,m,c1,c2,v;
int a1[maxn],a2[maxn];
int main()
{
    while(~scanf("%d%d%d%d%d",&n,&m,&c1,&c2,&v))
    {
        memset(a1,0,sizeof(a1));
        memset(a2,0,sizeof(a2));
        for(int i=0; i"%d",&a1[i]);
        }
        for(int j=0; j"%d",&a2[j]);
        }
        sort(a1,a1+c1);
        sort(a2,a2+c2);
        int q;
        scanf("%d",&q);
        int x1,x2,y1,y2;
        for(int i=1; i<=q; i++)
        {
            scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
            if(x1==x2)
            {
                printf("%d\n",abs(y1-y2));
            }
            else
            {
                int ans=inf;
                int k;
                if(c2)
                {
                    k=lower_bound(a2,a2+c2,y1)-a2;
                    if(k>=0&&kabs(x1-x2)/v+(abs(x1-x2)%v?1:0)+abs(y1-a2[k])+abs(y2-a2[k])));
                    k--;
                    if(k>=0&&kabs(x1-x2)/v+(abs(x1-x2)%v?1:0)+abs(y1-a2[k])+abs(y2-a2[k]));

                    k=lower_bound(a2,a2+c2,y2)-a2;
                    if(k>=0&&kabs(x1-x2)/v+(abs(x1-x2)%v?1:0)+abs(y1-a2[k])+abs(y2-a2[k]));
                    k--;
                    if(k>=0&&kabs(x1-x2)/v+(abs(x1-x2)%v?1:0)+abs(y1-a2[k])+abs(y2-a2[k]));
                }
                if(c1)
                {
                    k=lower_bound(a1,a1+c1,y1)-a1;
                    if(k>=0&&kabs(x1-x2)+abs(y1-a1[k])+abs(y2-a1[k]));//printf("    %d\c1",ans);
                    k--;
                    if(k>=0&&kabs(x1-x2)+abs(y1-a1[k])+abs(y2-a1[k]));

                    k=lower_bound(a1,a1+c1,y2)-a1;
                    if(k>=0&&kabs(x1-x2)+abs(y1-a1[k])+abs(y2-a1[k]));
                    k--;
                    if(k>=0&&kabs(x1-x2)+abs(y1-a1[k])+abs(y2-a1[k]));
                }
                printf("%d\n",ans);
            }
        }
    }
    return 0;
}

你可能感兴趣的:(ACM_思想,ACM_cf,刷完codeforces)