#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;
}
#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;
}









