Click here to Skip to main content
15,887,376 members
Please Sign up or sign in to vote.
1.00/5 (4 votes)
See more:
This code is taking 26 seconds for execution. Please optimize, but it must take 150000 inputs.
C++
#include <stdlib.h>
#include<stdio.h>
#include<time.h>

int q1, q2, q3, q4;
 void quadrant(long temp1,long temp2)
 {

        if(temp1&gt;=0&&temp2&gt;=0)
       q1++;
     else if(temp1&gt;=0&&temp2&lt;=0)
       q4++;
     else if(temp1&lt;0&&temp2&lt;0)
       q3++;
     else if(temp1&lt;=0&&temp2&gt;=0)
        q2++;

  }

 int main()
 {
time_t start,end;
  volatile long unsigned t;

  start = time(NULL);
  
  

int a[100000][2],c,d,n,i,j,will,b[102420][4],k=0;
 char p;
 //printf("enter the number of co ordinate");
 scanf("%d",&n);
 for(i=0;i&lt;n;i++)&gt;
 for(j=0;j&lt;2;j++)
 scanf("%d",&a[i][j]);
 //printf("enter no of operations");
scanf("%d",&will);
while(will&gt;0)
{
p=getchar();
scanf("%c",&p);
switch(p)
{
case 'X':               scanf("%d %d",&c,&d);
                 for(i=c-1;i&lt;d;i++)&gt;
                 a[i][1]=-(a[i][1]);break;
case 'Y':
               scanf("%d %d",&c,&d);
               for(i=c-1;i&lt;d;i++)&gt;
               a[i][0]=-(a[i][0]);break;
case 'C':       scanf("%d %d",&c,&d);
               for(i=c-1;i&lt;=d-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&lt;n;i++)&gt;
              {
                for(j=0;j&lt;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&lt;k;i++)&gt;
{
printf("%d %d %d %d\n",b[i][0],b[i][1],b[i][2],b[i][3]);

}
will--;
}
 end = time(NULL);
  
  printf("Loop used %f seconds.\n", difftime(end, start));

}
Posted
Updated 6-Sep-11 19:45pm
v3
Comments
Sergey Alexandrovich Kryukov 7-Sep-11 1:41am    
Why would anyone be interested to even look at this, forget "optimization"?
--SA
Malli_S 7-Sep-11 2:16am    
Better you reformat the code first, it's hard to look into it.
Chuck O'Toole 7-Sep-11 2:59am    
And yet the 4th time you've posted this code. Shouldn't your class be on the next assignment by now?

If you want people to do jobs for you, then you have to do something for them:
1) Pay them. This renders the other options unnecessary, but still advisable.
2) Be polite. "Ask" them to do it, not just tell them.
3) Explain why you can't do it.
4) Make the code easy to read and understand:
4a) Comments.
4b) Indentation and and formatting
4c) Use sensible variable names.
4d) Be consistent.

Since you have done none of these things, you can go away (in small jerky movements), and do it yourself.
 
Share this answer
 
Comments
Mehdi Gholam 7-Sep-11 3:30am    
Hear! Hear!
Ashish Tyagi 40 7-Sep-11 3:59am    
Perfect advice, my 5
You are asking for optimization on a loop that has interaction with the user (and in fact you are measuring the performance of such a loop). It makes little sense to me.
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900