
Untitled
By: a guest on
May 7th, 2012 | syntax:
None | size: 1.39 KB | hits: 13 | expires: Never
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException
{
Scanner sc=new Scanner(System.in);
int ileTestow=sc.nextInt();
String odps="";
while(ileTestow-->0)
{
int ileZawodnikow=sc.nextInt();
int co =1;
int cena[]=new int[ileZawodnikow+1];
int umiejetnosc[]=new int[ileZawodnikow+1];
while(co<=ileZawodnikow)
{
umiejetnosc[co]=sc.nextInt();
cena[co]=sc.nextInt();
co++;
}
int budzet=sc.nextInt();
int [][]odp=new int[ileZawodnikow+1][budzet+1];
boolean [][]czyw=new boolean[ileZawodnikow+1][budzet+1];
for(int i=1;i<=ileZawodnikow;i++)
for(int j=1;j<=budzet;j++)
if(cena[i] >j)
{
odp[i][j]=odp[i-1][j];
}
else
{
if(odp[i-1][j]>=odp[i-1][j-cena[i]] + umiejetnosc[i])
{
odp[i][j]=odp[i-1][j];
}
else
{
odp[i][j]=odp[i-1][j-cena[i]] + umiejetnosc[i];
czyw[i][j]=true;
}
}
odps="";
for(int i=ileZawodnikow,j=budzet;i>0;i--)
{
if(czyw[i][j])
{
odps=i+" "+odps;
j=j-cena[i];
}
}
System.out.println(odps);
}
}
}