Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstring>
- #include <cstdlib>
- #include <cmath>
- #include <cctype>
- #include <algorithm>
- using namespace std;
- const int MAXN = 100005;
- int query[ MAXN ];
- int L[ MAXN ];
- int R[ MAXN ];
- int block[ MAXN ];
- inline bool cmp( const int &a, const int &b )
- {
- return block[a] < block[b] || block[a] == block[b] && L[a] < L[b];
- }
- int N, Q;
- int sqrtN;
- int A[ MAXN ];
- int freq[ 2 ][ MAXN ];
- // freq[1][x] -> frekvencija x-tog elementa // frequency of element x
- // freq[2][y] -> broj elemenata s fekvencijom y // number of elements with frequency == y
- int sol[ MAXN ];
- int ans;
- // dodaj broj
- // add number to freq table
- inline void inc( int x )
- {
- if ( freq[0][x] ) freq[1][ freq[0][x] ]--;
- freq[0][x]++;
- freq[1][ freq[0][x] ]++;
- ans = max( ans, freq[0][x] );
- }
- // makni broj
- // del number from freq table
- inline void dec( int x )
- {
- freq[1][ freq[0][x] ]--;
- freq[0][x]--;
- if ( freq[0][x] > 0 ) freq[1][ freq[0][x] ]++;
- while ( ans && !freq[1][ans] ) --ans;
- }
- inline void move( int nx, int ny, int &x, int &y )
- {
- for ( ; x > nx; ) inc( A[--x] );
- for ( ; x < nx; ++x ) dec( A[x] );
- for ( ; y > ny; --y ) dec( A[y] );
- for ( ; y < ny; ) inc( A[++y] );
- }
- int main()
- {
- scanf( "%d%d", &N, &Q );
- //N = IO :: read_int(); Q = IO :: read_int();
- sqrtN = (int) sqrt( N );
- for ( int i = 0; i < N; ++i ) scanf( "%d", A+i );//A[i] = IO :: read_int();
- for ( int i = 0; i < Q; ++i ) {
- scanf( "%d%d", L+i, R+i );//L[i] = IO::read_int(), R[i] = IO::read_int();
- block[i] = (R[i]-L[i]) / sqrtN; //l / sqrtN;
- query[i] = i;
- }
- sort( query, query + Q, cmp );
- ans = 0;
- int lo = L[query[0]];
- int hi = R[query[0]];
- for ( int i = lo; i <= hi; ++i ) inc( A[i] );
- sol[ query[0] ] = ans;
- for ( int i = 1; i < Q; ++i ) {
- move( L[query[i]], R[query[i]], lo, hi );
- sol[ query[i] ] = ans;
- }
- for ( int i = 0; i < Q; ++i )
- printf( "%d\n", sol[i] );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement