Please have a look at this page: 
http://www.informatik.uni-ulm.de/acm/Locals/2007/input/.
It contains input data for the problem.

On 21 окт, 00:39, ANUJ KUMAR <kumar.anuj...@gmail.com> wrote:
> i am getting wa forhttps://www.spoj.pl/problems/FREQUENT/
> here is my code i have used segment trees it would be great if someone
> could give me a test case for which my code gives wa.
> Thanks in advance.
>
>     #include<iostream>
>     #include<vector>
>     #include<fstream>
>     #include<math.h>
>     #include<string.h>
>     #include<stdio.h>
>     using namespace std;
>     int max(int a,int b)
>     {
>         if(a>b)return a;
>         return b;
>     }
>     int min(int a,int b)
>     {
>         if(a<b)return a;
>         return b;
>     }
>     template<class T>
>     class SegmentTree
>     {
>          int **A,size;
>          public:
>          SegmentTree(int N)
>          {
>               int x = (int)(ceil(log(N)/log(2)));
>               size = 2*(int)pow(2,x);
>               A = new int*[size];
>               for(int x=0;x<size;x++)
>               A[x]=new int[4];
>               for(int x=0;x<size;x++)
>               {
>                   for(int y=0;y<4;y++)
>                   A[x][y]=-1;
>               }
>          }
>          void initialize(int node, int start,
>                              int end, 
> vector<int>v1,vector<int>v2,vector<int>v3)
>          {
>
>               if (start==end)
>                  {A[node][0] =
> v1[start];A[node][2]=v2[start];A[node][3]=v3[start];A[node][1]=-1;}
>               else
>               {
>                   int mid = (start+end)/2;
>                   initialize(2*node,start,mid,v1,v2,v3);
>                   initialize(2*node+1,mid+1,end,v1,v2,v3);
>                   if (A[2*node][3]>=
>                          A[2*node+1][3])
>                      {A[node][0] = A[2 * node][0];A[node][1] = A[2 *
> node][2];A[node][2] = A[2 * node+1][2];A[node][3]=A[2*node][3];}
>                   else
>                        {A[node][0] = A[2 * node][0];A[node][1] = A[2 *
> node][2];A[node][2] = A[2 * node+1][2];A[node][3]=A[2*node+1][3];}
>               }
>          }
>     //     void pr()
>     //     {
>     //         for(int x=1;x<size;x++) cout<<"x="<<x<<" "<<A[x][0]<<"
> "<<A[x][1]<<" "<<A[x][2]<<" "<<A[x][3]<<"\n";
>     //     }
>          int query(int node,int i, int j)
>          {
>            //  cout<<"node="<<node<<" i="<<i<<" j="<<j<<"\n";
>
>              if (i>A[node][2] || j<A[node][0])
>                 {return -1;}
>
>              else if (A[node][1]==-1&&j<=A[node][2]&&i>=A[node][0])
>                {int
> ss=max(i,A[node][0])-A[node][0];ss=ss+A[node][2]-min(j,A[node][2]);return
> (A[node][3]-ss);}
>                else
>                { int id1=-1,id2=-1;
>                if(i<=A[node][1])
>              id1 = query(2*node,i,min(j,A[node][1]));
>              if(A[node][1]<j)
>              id2 = query(2*node+1,max(i,A[node][1]+1),j);
>     //cout<<"node="<<node<<"id1="<<id1<<"id2="<<id2<<"\n";
>              if (id1==-1)
>                 return id2;
>              if (id2==-1)
>                 return id1;
>
>              if (id1>=id2)
>                 return id1;
>              else
>                  return id2;
>                }
>
>          }
>     };
>     int main()
>     {
>       int i,j,N;
>         int A[100006];
>         scanf("%d",&N);
>         int M;
>         scanf("%d",&M);
>         for (i=0;i<N;i++)
>             scanf("%d",&A[i]);
>            vector<int>v1;
>            vector<int>v2;
>            vector<int>v3;
>            int ini=A[0],now,count=1,ip=0;
>            for(int x=1;x<N;x++)
>            {
>                now=A[x];
>                if(now==ini)
>                count++;
>                
> else{ini=A[x];v1.push_back(ip);v2.push_back(x-1);v3.push_back(count);count= 
> 1;ip=x;}
>            }
>            v1.push_back(ip);v2.push_back(N-1);v3.push_back(count);
>            int sz=v1.size();
>       SegmentTree<int> s(sz);
>         s.initialize(1,0,sz-1,v1,v2,v3);
>
>         for(int x=0;x<M;x++)
>         {
>         (scanf("%d%d",&i,&j));
>            printf("%d\n",s.query(1,i-1,j-1));
>
>         }
>         int tmp;
>         cin>>tmp;
>         return(0);
>     }

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@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.

Reply via email to