Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define sf scanf
- #define pf printf
- #define pb push_back
- #define mp make_pair
- #define PI ( acos(-1.0) )
- #define mod 1000000007
- #define maxn 200005
- #define DBG pf("Hi\n")
- #define loop(i,n) for(i=1 ; i<=n ; i++)
- using namespace std ;
- typedef long long int i64 ;
- int n , l , a[maxn] , b[1000][1000] , sum[1000][1000] ;
- int sz[1000] , bl[maxn] , st[1000] , en[1000] , pos[1000][1000] ;
- void upd(int blk, int idx, int val)
- {
- while(idx<=sz[blk])
- {
- sum[blk][idx] += val ;
- idx += idx&(-idx) ;
- }
- return ;
- }
- int query( int blk , int idx )
- {
- int ret=0 ;
- while(idx>0)
- {
- ret += sum[blk][idx] ;
- idx -= (idx&(-idx)) ;
- }
- return ret ;
- }
- void init()
- {
- int i , j , k , len ;
- len = sqrt(n) ;
- memset(sz,0,sizeof(sz)) ;
- for(i=0 ; i<n ; i++)
- {
- j = i/len ;
- sz[j]++ ;
- b[ sz[j] ] = a[i] ;
- bl[i] = j ;
- }
- l = (n-1)/len ;
- for(i=0 ; i<=l ; i++)
- {
- sort(b+1,b+sz[i]+1) ;
- for(j=1 ; j<=sz[i] ; j++) pos[ b[j] ] = j ;
- upd( blk,idx,1 ) ;
- }
- return ;
- }
- int main()
- {
- int i , j , k , l , m ;
- while(sf("%d %d",&n,&m))
- {
- for( i=1 ; i<=n ; i++ ) sf("%d",&a[i]) ;
- init() ;
- for(i=1 ; i<=m ; i++)
- {
- }
- }
- return 0 ;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement