我只爱张译仁吧 关注:2贴子:4
  • 2回复贴,共1


IP属地:北京1楼2017-11-24 17:56回复
    #include <iostream>
    #include <cmath>
    #include <stdlib.h>
    #include <stdio.h>
    int n;
    long long arrayx[200000];
    long long arrayy[200000];
    int m;
    int sign=0;
    int a=0;
    int b=0;
    int c=0;
    int answer[1100000];
    long long testx[200000];
    long long testy[200000];
    char output[3000000];//输出优化
    int cmp ( const void *a , const void *b ) //比较函数
    {
    return *(int *)a - *(int *)b;
    }
    int calc2(int low,int high,int i) //二分法计算 这里是迭代
    {
    if (low>high)
    return high;
    int mid =(low+high)/2;
    if (arrayx[mid]*testy[i]>=(-1)*testx[i]*arrayy[mid]+arrayx[mid]*arrayy[mid])
    return calc2(mid+1,high,i);else return calc2(low,mid-1,i);
    }
    void Debug(int n,int m)
    {
    for (int i=1;i<=n;i++)
    {
    std::cout<<arrayx[i]<<arrayy[i]<<std::endl;
    }
    }
    int main()
    {
    int temp=1;
    setvbuf(stdout, output, _IOFBF, sizeof(output));
    scanf("%d",&n);
    for(int i=0;i<n;i++)
    {
    scanf("%d%d%d",&a,&b,&c);
    if(a==0)
    {
    sign++;
    arrayx[sign]=b;
    arrayy[sign]=c;
    qsort(arrayx+1,sign,sizeof(arrayx[1]),cmp); // sort the x pos
    qsort(arrayy+1,sign,sizeof(arrayy[1]),cmp);// sort the y pos
    }
    if(a==1)
    {
    testx[temp]=b;
    testy[temp]=c;
    answer[temp]=calc2(1,sign,temp);
    temp++;
    }
    if(a==2)
    {
    arrayx[b]=arrayx[sign];
    arrayy[c]=arrayy[sign];
    arrayx[sign]=0;
    arrayy[sign]=0;
    sign--;
    qsort(arrayx+1,sign,sizeof(arrayx[1]),cmp); // sort the x pos
    qsort(arrayy+1,sign,sizeof(arrayy[1]),cmp);
    }
    }// sort the y pos
    //Debug(n,m);
    for(int i=1;i<temp;i++)
    {
    printf("%d\n",answer[i]);
    }
    return 0;
    }


    IP属地:北京2楼2017-12-02 21:45
    回复
      2026-05-04 18:14:45
      广告
      不感兴趣
      开通SVIP免广告
      真滴帅


      IP属地:北京3楼2018-03-01 20:28
      回复