Aiuto per FibonacciBug

Mi servirebbe aiuto per Fibonacci Colonies (fibonaccibug)
Al momento riesco a fare solo 10 su 100
Detto in poche parole aggiungo solo le colonie che fanno parte di una colonia minore di 26 ( fibonacci di 26 > max_K)
E mi salvo i prezzi massimi per ogni colonia
Sucessivamente faccio un unbounded Knapsack.
Non riesco a capire dove ho sbagliato

#include<bits/stdc++.h> 
using namespace std;
 
vector<long long>wt, val; //wt = weight,  val = value;

long long knap(long long W, long long n){

	if(n==0)
		return 0;
		
	vector<long long>dp(W+1,0);
	
	for (long long i=0; i<=W; i++) 
		for (long long j=0; j<n; j++) 
			if (wt[j] <= i) 
				dp[i] = max(dp[i], dp[i-wt[j]]+val[j]); 

	return dp[W]; 
} 


int main() 
{ 	
	long long T,N,K;
	cin>>T;
	
	vector<long long>fibo(2,1);
	
	for(long long i=2;i<25;i++){
		fibo.push_back(fibo[i-1]+fibo[i-2]);
	}

	for(long long t=0;t<T;t++){
		cin>>N>>K;
		vector<long long>V(26,-1);
		long long A,B;
		
		for(long long i=0;i<N;i++){
			cin>>A>>B;
			if(A<26)
				V[A]=max(V[A],B);
		}
		
		for(long long i=0;i<V.size();i++)
			if(V[i]!=-1){
				cout<<V[i]<<endl;
				val.push_back(V[i]);
				wt.push_back(fibo[i]);
			}	
		
		cout << knap(K,val.size())<<endl; 
		val.clear();
		wt.clear();
	}
	
	return 0; 
}

N e K sono diversi per ogni caso.

ahh avevo compreso male pensavo che N e K rimanessero gli stessi e cambiassero solo i valori

ma comunque non mi rida

ho corretto l’errore ma comunque faccio sempre 10/100

for(long long i=2;i<25;i++)

Prova con un valore maggiore di 25

perché facendo minore di 25 mi salvo fino al 25esimo numero dei fibonacci quindi 70mila e qualcosa mentre il 26esimo è maggiore del valore max di K

Se sostituisci con 25 con 26 fa 100

ho appena controllato anch’io e fa 100 anche se non capisco il perché.
La ho anche ottimizzata un minimo ed ora è in ottava posizione
Grazie mille