forgot to attach the code...here is the modified code.. #include<vector> #include<iostream> #include<algorithm> #include<cstdio> #include<cmath>
using namespace std; int main() { int num,ans=0,value,i,j,k,t,a,b,c,d,e,f; scanf("%d",&num); vector<int> val,a1,a2; for(i=0;i<num;i++) { scanf("%d",&t); val.push_back(t); } for(i=0;i<num;i++) { a=val[i]; for(j=0;j<num;j++) { b=val[j]; for(k=0;k<num;k++) { c=val[k]; t=a*b+c; a1.push_back(t); } } } for(i=0;i<num;i++) { d=val[i]; for(j=0;j<num;j++) { e=val[j]; for(k=0;k<num;k++) { f=val[k]; t=(f+e)*d; a2.push_back(t); } } } sort(a2.begin(),a2.end()); vector<int>::iterator itr; for(itr=a1.begin();itr!=a1.end();itr++) { value=*itr; //ans+=count(a2.begin(),a2.end(),value); ans+=upper_bound(a2.begin(),a2.end(),value)-lower_bound(a2.begin(),a2.end(),value); } printf("%d",ans); return 0; } On Sun, Jun 12, 2011 at 1:07 AM, nicks <crazy.logic.k...@gmail.com> wrote: > @keyan..your advice was really very helpful...the time limit has come under > control ...1.4s but now i am getting WA though my code is giving right ans > for the test cases...can you plz help me in figuring out where it fails .. > > > On Sun, Jun 12, 2011 at 12:59 AM, keyan karthi > <keyankarthi1...@gmail.com>wrote: > >> >> hint: u ve commented some vital part of ur code ;) >> >> On Sun, Jun 12, 2011 at 12:46 PM, saurabh singh <saurab...@gmail.com>wrote: >> >>> >>> I did used the library functions but I am getting sigsegv after 0.03 s.I >>> cant understand why?I am presuming sumthing wrong about the implemenatation >>> of bsearch? >>> I am assuming bsearch is returning a pointer to the first found element. >>> >>> On Sun, Jun 12, 2011 at 12:41 PM, keyan karthi < >>> keyankarthi1...@gmail.com> wrote: >>> >>>> upper_bound and lower_bound does a binary search to get count of alike >>>> terms.. which u tend to sum of to get the ans.. >>>> out of the two arrays, u need to sort one array.. this will be teh >>>> vector in which u do the binary search wit every element of un sorted >>>> array.. >>>> this is the approach i used... :) hope this helps... >>>> >>>> the above functions defined in "algorithm" >>>> >>>> >>>> On Sun, Jun 12, 2011 at 12:34 PM, nicks <crazy.logic.k...@gmail.com>wrote: >>>> >>>>> and here is my code I'm Getting TLE.... i tried to implement binary >>>>> search but failed bcoz how will i be able to trace the value from one >>>>> vector >>>>> into another vector if there are any multiple occureneces of any value(i >>>>> mean i have count them).....in this code i i have used count of algorithm >>>>> which may be expensive...suggest a better way plz...thnx in advance !! >>>>> >>>>> >>>>> >>>>> #include<vector> >>>>> #include<iostream> >>>>> #include<algorithm> >>>>> #include<cstdio> >>>>> #include<cmath> >>>>> using namespace std; >>>>> int main() >>>>> { >>>>> int num,ans=0,value,i,j,k,t,a,b,c,d,e,f; >>>>> scanf("%d",&num); >>>>> vector<int> val,a1,a2; >>>>> for(i=0;i<num;i++) >>>>> { >>>>> scanf("%d",&t); >>>>> val.push_back(t); >>>>> } >>>>> for(i=0;i<num;i++) >>>>> { >>>>> a=val[i]; >>>>> for(j=0;j<num;j++) >>>>> { >>>>> b=val[j]; >>>>> for(k=0;k<num;k++) >>>>> { >>>>> c=val[k]; >>>>> t=a*b+c; >>>>> a1.push_back(t); >>>>> } >>>>> } >>>>> } >>>>> for(i=0;i<num;i++) >>>>> { >>>>> d=val[i]; >>>>> for(j=0;j<num;j++) >>>>> { >>>>> e=val[j]; >>>>> for(k=0;k<num;k++) >>>>> { >>>>> f=val[k]; >>>>> t=(f+e)*d; >>>>> a2.push_back(t); >>>>> } >>>>> } >>>>> } >>>>> >>>>> vector<int>::iterator itr; >>>>> for(itr=a1.begin();itr!=a1.end();itr++) >>>>> { >>>>> value=*itr; >>>>> ans+=count(a2.begin(),a2.end(),value); >>>>> } >>>>> >>>>> printf("%d\n",ans); >>>>> return 0; >>>>> } >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> On Sat, Jun 11, 2011 at 11:57 PM, saurabh singh <saurab...@gmail.com >>>>> > wrote: >>>>> >>>>>> >>>>>> OK here is my code >>>>>> #include<stdio.h> >>>>>> #include<algorithm> >>>>>> #include<utility> >>>>>> using namespace std; >>>>>> int compareints (const void * a, const void * b) >>>>>> { >>>>>> return ( *(long*)a - *(long*)b ); >>>>>> } >>>>>> >>>>>> >>>>>> int main() >>>>>> { >>>>>> int n,s[101],a,b,c,d,e,f; >>>>>> long p1[100009],p2[100009]; >>>>>> int i,j,k; >>>>>> scanf("%d",&n); >>>>>> for(i=0;i<n;i++) scanf("%d",&s[i]); >>>>>> //sort(s,s+i); >>>>>> k=0; >>>>>> for(i=0;i<n;i++) >>>>>> { >>>>>> for(j=0;j<n;j++) >>>>>> { >>>>>> for(int l=0;l<n;l++) >>>>>> { >>>>>> if(s[l]) >>>>>> p1[k++]=(s[i]+s[j])*s[l]; >>>>>> } >>>>>> } >>>>>> } >>>>>> //sort(p1,p1+k); >>>>>> int x=0; >>>>>> for(i=0;i<n;i++) >>>>>> { >>>>>> for(j=0;j<n;j++) >>>>>> { >>>>>> for(int l=0;l<n;l++) >>>>>> { >>>>>> //if(s[l]!=0) >>>>>> p2[x++]=(s[i]*s[j])+s[l]; >>>>>> } >>>>>> } >>>>>> } >>>>>> sort(p2,p2+x); >>>>>> long *pItem; >>>>>> long count=0; >>>>>> for(i=0;i<k;i++) >>>>>> { >>>>>> pItem = (long*) bsearch (&p1[i], p2, x, sizeof (long), >>>>>> compareints); >>>>>> if(pItem){ >>>>>> >>>>>> long *tmp=pItem; >>>>>> if(pItem==p2)while(*(tmp)==p1[i]&&tmp<p2+x){ >>>>>> count++;tmp++;} >>>>>> else >>>>>> if(pItem==(p2+(x-1))) { >>>>>> while(pItem>=p2&&*(pItem)==p1[i]){count++;pItem--;}} >>>>>> else{ >>>>>> tmp++; >>>>>> while(*(tmp)==p1[i]&&tmp<p2+x){ >>>>>> count++;tmp++;} >>>>>> >>>>>> while(pItem>=p2&&*(pItem)==p1[i]){count++;pItem--;} >>>>>> } >>>>>> //count++; >>>>>> } >>>>>> } >>>>>> printf("%ld\n",count); >>>>>> >>>>>> //for(i=0;i<k;i++) printf("%ld ",p1[i]);printf("\n"); >>>>>> //for(i=0;i<x;i++) printf("%ld ",p2[i]);printf("\n"); >>>>>> return 0; >>>>>> } >>>>>> >>>>>> >>>>>> Why is it getting segmentation fault? >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Algorithm Geeks" group. >>>>>> To post to this group, send email to algogeeks@googlegroups.com. >>>>>> To unsubscribe from this group, send email to >>>>>> algogeeks+unsubscr...@googlegroups.com. >>>>>> For more options, visit this group at >>>>>> http://groups.google.com/group/algogeeks?hl=en. >>>>>> >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Algorithm Geeks" group. >>>>> To post to this group, send email to algogeeks@googlegroups.com. >>>>> To unsubscribe from this group, send email to >>>>> algogeeks+unsubscr...@googlegroups.com. >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/algogeeks?hl=en. >>>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Algorithm Geeks" group. >>>> To post to this group, send email to algogeeks@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> algogeeks+unsubscr...@googlegroups.com. >>>> For more options, visit this group at >>>> http://groups.google.com/group/algogeeks?hl=en. >>>> >>> >>> >>> >>> -- >>> Saurabh Singh >>> B.Tech (Computer Science) >>> MNNIT ALLAHABAD >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Algorithm Geeks" group. >>> To post to this group, send email to algogeeks@googlegroups.com. >>> To unsubscribe from this group, send email to >>> algogeeks+unsubscr...@googlegroups.com. >>> For more options, visit this group at >>> http://groups.google.com/group/algogeeks?hl=en. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Algorithm Geeks" group. >> To post to this group, send email to algogeeks@googlegroups.com. >> To unsubscribe from this group, send email to >> algogeeks+unsubscr...@googlegroups.com. >> For more options, visit this group at >> http://groups.google.com/group/algogeeks?hl=en. >> > > -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.