Botoaie 50/100(olimpiadi 2019/2020)

i need help, with this code i get 50/100:

    #include <bits/stdc++.h>
    using namespace std;
    #define MAXN 200000
    int N, K, Q, P;
    int V[MAXN];

    int main() {
    	freopen("input.txt", "r", stdin);
    	freopen("output.txt", "w", stdout);

    	assert(2 == scanf("%d%d", &N, &K));
        assert(2 == scanf("%d%d", &P, &Q));
        for(int i=0; i<N; i++)
            assert(1 == scanf("%d", &V[i]));

    	int result=0;
    	sort(V,V+N);
    	if(K==N || P==Q || N==1){
    		result=ceil((float)V[N-1]/(float)P);
    	}else{
    		if(P>Q){
    			int tmp=P;
    			P=Q;
    			Q=tmp;
    			K=N-K;
    		}
    		do{
    			result++;
    			for(int i=0;i<K;i++)
    				V[i]=V[i]-P;
    			for(int i=K;i<N;i++)
    				V[i]=V[i]-Q;
    			if(V[K-1]>V[K]) sort(V,V+N);

    		}while(V[N-1]>0);
    	}
        	printf("%d\n", result);
        	return 0;
    }
1 Mi Piace