#include using namespace std; #define mp(a,b) make_pair(a,b) #define ff first #define setp(x) setprecision(x)< (or >= if equal_case==1) second sum, and reinitilizes first and second arrays to 0 int gr = -1; for(int i=MAX-1; i>-1; i--){ if(gr==-1){ if(fir[i] > sec[i]) gr = 1; else if(sec[i] > fir[i]) gr = 0; } fir[i]=0, sec[i]=0; } if(equal_case) return (gr!=0); return (gr==1); } void deal(){ int t; cin>>t; assert(t<=10); forl(t){ init(); int n,k; cin>>n>>k; assert(n<=pow(10,5)); assert(k>=2); fori(n){ cin>>arr[i]; assert(arr[i]<=pow(10,5)); assert(arr[i]>=0); freq[arr[i]]++; } int a = 0, b= n-1; while(a sum2 int c = (a+b)/2; // cout<= right part) without a, if yes than output left (as if in a-1), otherwise right(as if in a) fori(a) fir[arr[i]]++; sec[arr[a]]--; sec[0] = freq[0] - fir[0]; fori(MAX-1){ sec[i+1] += freq[i+1] - fir[i+1]; sec[i+1] += sec[i]/k, sec[i]%=k; fir[i+1] += fir[i]/k, fir[i]%=k; } if(great(1)) cout<