返回首页

问题:
在平面上有N个点。 i点坐标(十一,彝族)。执行下列查询:
1)反映i和j都包括沿X轴点之间的所有点。此查询时表示为"X I J"
2)反映i和j都包括沿Y轴点之间的所有点。此查询时表示为"Y I J"
3)计数点i和j之间的多点均在4象限,包括谎言。此查询时,表示为"I J"

输入:
第一行包含N个点的数量。以下N行。
第i行包含由空格分隔的xi和彝族。
下一行包含Q的查询号码。接下来Q行包含一个查询,上述形式之一。
1索引的所有指标都。

输出:
输出线为每个查询键入"C IJ"。相应的行包含4个整数点范围内的指数[我...... J]在第一,第二,第三和第四象限分别

约束:
1 <= <= 100000
1 <= Q时LT = 1000000;
你可以假设,没有点的X或Y轴。
(十一,彝族),适合在32位有符号整数
所有查询中,1公升= I LT = J LT =

样例输入:
4 / /点
1
-1 1
-1 -1
1 -1
5 / /操作数
1 4
×2 4
3 4
Y 1 2
1 3

输出范例:
1 1 1 1
1 1 0 0
0 2 0 1

我的解决方案正在为小投入,但它不是为100000points和执行得到分割故障时以上100000点工作。


#include<stdio.h>               

  int main()

  {

  

 //int* a;

//a=(int *)malloc(1000);

  int a[1000][1000],c,d,n,i,j,q1=0,q2=0,q3=0,q4=0,will=1,b[20][20],k=0;

  char p;

  //printf("enter the number of co ordinate");

  scanf("%d",&n);

  for(i=0;i<n;i++)>

  for(j=0;j<2;j++)

  scanf("%d",&a[i][j]);

  void quadrant(int temp1,int temp2)

  {

                   

         if(temp1>=0&&temp2>=0)

        q1++;

      else if(temp1>=0&&temp2<=0)

        q2++;

      else if(temp1<0&&temp2<0)

        q3++;

      else if(temp1<=0&&temp2>=0)

         q4++;

 

   }

//printf("enter no of operations");

scanf("%d",&will);

                

while(will>0)

{

 

p=getchar();

scanf("%c",&p);

switch(p)

{

case 'x': 

                scanf("%d %d",&c,&d);

                  for(i=c-1;i<d;i++)>

                  a[i][1]=-(a[i][1]);break;

case 'y': 

                scanf("%d %d",&c,&d);

                for(i=c-1;i<d;i++)>

                a[i][0]=-(a[i][0]);break;

case 'c':       scanf("%d %d",&c,&d);

                for(i=0;i<=n-1;i++)

                {

                 int temp1,temp2;

                 temp1=a[i][0];

                 temp2=a[i][1];

              

                 quadrant(temp1,temp2);

                } 

               b[k][0]=q1;

               b[k][1]=q2 ;

               b[k][2]=q3;

               b[k][3]=q4; 

             

                  k=k+1; 

    q1=0;

    q2=0;

    q3=0;

    q4=0; 

 

                 

                  break;

case 'p':   printf(" the co-ordinates are:\n");

               for(i=0;i<n;i++)>

               {

                 for(j=0;j<2;j++)

                {

              printf("%d   ",a[i][j]);

                 }

                printf("\n");

                 } 

                 break;                               

     

default: printf("enter the correct choice\n");break;

}

if(will==1)

for(i=0;i<k;i++)>

{

printf("%d %d %d %d\n",b[i][0],b[i][1],b[i][2],b[i][3]);

 

}

will--;

}

}

回答

评论会员: 时间:2