提出 #13051676
ソースコード 拡げる
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.*;
import java.io.*;
public class Main {
InputStream is;
PrintWriter out;
String INPUT = "";
//class Declaration
static class pair implements Comparable<pair>{
int x;
int y;
pair (int i,int j)
{ x=i; y=j;
}
public int compareTo(pair p){
if(this.x!=p.x) { return this.x-p.x;}
else { return this.y-p.y;}
}
public int hashCode() { return (x+" "+y).hashCode();}
public String toString(){ return x+" "+y;}
public boolean equals(Object o){
pair x = (pair) o ;
return (x.x==this.x&&x.y==this.y);}
}
long mod = (long)1e9 + 5 ;
void solve() throws Exception{
int n=ni(),m=ni(),x=ni();
int[] cost= new int[n];
int[][] alg = new int[n][m];
for(int i=0;i<n;++i){
cost[i]=ni();
alg[i]=na(m);
}
int ans = Integer.MAX_VALUE ;
for(int i=0;i<(1<<n); ++i){
int la = 0;
int[] learn = new int[m];
for(int j= 0 ;j<n; ++j){
if (((i>>j) & 1 ) ==1 ){
la += cost[j] ;
for(int k=0;k<m;++k){
learn[k]+= alg[j][k];
}
}
}
boolean pos= true ;
for(int j=0;j<m;++j){
if(learn[j]<x){
pos = false;
break ;
}
}
if(pos){
ans = Math.min(ans,la);
}
}
if(ans != Integer.MAX_VALUE)
pn(ans);
else pn(-1);
}
long pow(long a,long b){
long result = 1;
while(b>0){
if(b%2==1) result = (result * a) % mod;
b/=2;
a=(a*a)%mod;
}
return result;
}
void print(Object o){
System.out.println(o);
System.out.flush();
}
int gcd(int a, int b)
{
if (b == 0)
return a;
return gcd(b, a % b);
}
void run() throws Exception{
is = INPUT.isEmpty() ? System.in : new ByteArrayInputStream(INPUT.getBytes());
out = new PrintWriter(System.out);
long s = System.currentTimeMillis();
solve();
out.flush();
if(!INPUT.isEmpty())tr(System.currentTimeMillis()-s+"ms");
}
public static void main(String[] args) throws Exception { new Main().run(); }
//output methods
private void pn(Object o)
{
out.println(o);
}
private void p(Object o)
{
out.print(o);
}
//input methods
private byte[] inbuf = new byte[1024];
public int lenbuf = 0, ptrbuf = 0;
private int readByte()
{
if(lenbuf == -1)throw new InputMismatchException();
if(ptrbuf >= lenbuf){
ptrbuf = 0;
try { lenbuf = is.read(inbuf); } catch (IOException e) { throw new InputMismatchException(); }
if(lenbuf <= 0)return -1;
}
return inbuf[ptrbuf++];
}
private boolean isSpaceChar(int c) { return !(c >= 33 && c <= 126); }
private int skip() { int b; while((b = readByte()) != -1 && isSpaceChar(b)); return b; }
private double nd() { return Double.parseDouble(ns()); }
private char nc() { return (char)skip(); }
private String ns()
{
int b = skip();
StringBuilder sb = new StringBuilder();
while(!(isSpaceChar(b))){ // when nextLine, (isSpaceChar(b) && b != ' ')
sb.appendCodePoint(b);
b = readByte();
}
return sb.toString();
}
private char[] ns(int n)
{
char[] buf = new char[n];
int b = skip(), p = 0;
while(p < n && !(isSpaceChar(b))){
buf[p++] = (char)b;
b = readByte();
}
return n == p ? buf : Arrays.copyOf(buf, p);
}
private char[][] nm(int n, int m)
{
char[][] map = new char[n][];
for(int i = 0;i < n;i++)map[i] = ns(m);
return map;
}
private int[] na(int n)
{
int[] a = new int[n];
for(int i = 0;i < n;i++)a[i] = ni();
return a;
}
private int ni()
{
int num = 0, b;
boolean minus = false;
while((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'));
if(b == '-'){
minus = true;
b = readByte();
}
while(true){
if(b >= '0' && b <= '9'){
num = num * 10 + (b - '0');
}else{
return minus ? -num : num;
}
b = readByte();
}
}
private long nl()
{
long num = 0;
int b;
boolean minus = false;
while((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'));
if(b == '-'){
minus = true;
b = readByte();
}
while(true){
if(b >= '0' && b <= '9'){
num = num * 10 + (b - '0');
}else{
return minus ? -num : num;
}
b = readByte();
}
}
private void tr(Object... o) { if(INPUT.length() > 0)System.out.println(Arrays.deepToString(o)); }
void watch(Object ... a) throws Exception{
int i=1;
print("watch starts :");
for(Object o : a ) {
//print(o);
boolean notfound = true;
if(o.getClass().isArray()){
String type = o.getClass().getName().toString();
//print("type is "+type);
switch (type) {
case "[I":{
int[] test = (int[])o ;
print(i+" "+Arrays.toString(test));
break;
}
case "[[I":{
int[][] obj = (int[][])o;
print(i+" "+Arrays.deepToString(obj));
break;
}
case "[J" : {
long[] obj = (long[])o ;
print(i+" "+Arrays.toString(obj));
break;
}
case "[[J": {
long[][] obj = (long[][])o;
print(i+" "+Arrays.deepToString(obj));
break;
}
case "[D" :{
double[] obj= (double[])o;
print(i+" "+Arrays.toString(obj));
break;
}
case "[[D" :{
double[][] obj = (double[][])o;
print(i+" "+Arrays.deepToString(obj));
break;
}
case "[Ljava.lang.String": {
String[] obj = (String[])o ;
print(i+" "+Arrays.toString(obj));
break;
}
case "[[Ljava.lang.String": {
String[][] obj = (String[][])o ;
print(i+" "+Arrays.deepToString(obj));
break ;
}
case "[C" :{
char[] obj = (char[])o ;
print(i+" "+Arrays.toString(obj));
break;
}
case "[[C" :{
char[][] obj = (char[][])o;
print(i+" "+Arrays.deepToString(obj));
break;
}
default:{
print(i+" type not identified");
break;
}
}
notfound = false;
}
if(o.getClass() == ArrayList.class){
print(i+" al: "+o);
notfound = false;
}
if(o.getClass() == HashSet.class){
print(i+" hs: "+o);
notfound = false;
}
if(o.getClass() == TreeSet.class){
print(i+" ts: "+o);
notfound = false;
}
if(o.getClass() == TreeMap.class){
print(i+" tm: "+o);
notfound = false;
}
if(o.getClass() == HashMap.class){
print(i+" hm: "+o);
notfound = false;
}
if(o.getClass() == LinkedList.class){
print(i+" ll: "+o);
notfound = false;
}
if(o.getClass() == PriorityQueue.class){
print(i+" pq : "+o);
notfound = false;
}
if(o.getClass() == pair.class){
print(i+" pq : "+o);
notfound = false;
}
if(notfound){
print(i+" unknown: "+o);
}
i++;
}
print("watch ends ");
}
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | C - Skill Up |
| ユーザ | cis_pie |
| 言語 | Java (OpenJDK 11.0.6) |
| 得点 | 300 |
| コード長 | 7017 Byte |
| 結果 | AC |
| 実行時間 | 94 ms |
| メモリ | 34068 KiB |
ジャッジ結果
| セット名 | sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 300 / 300 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| sample | sample01, sample02, sample03 |
| All | border01, border02, border03, border04, hand01, hand02, hand03, hand04, hand05, large01, large02, large03, large04, large05, large06, large07, large08, random01, random02, random03, random04, sample01, sample02, sample03 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| border01 | AC | 65 ms | 32908 KiB |
| border02 | AC | 86 ms | 33432 KiB |
| border03 | AC | 69 ms | 32760 KiB |
| border04 | AC | 78 ms | 33588 KiB |
| hand01 | AC | 67 ms | 32484 KiB |
| hand02 | AC | 69 ms | 32724 KiB |
| hand03 | AC | 84 ms | 33964 KiB |
| hand04 | AC | 69 ms | 32696 KiB |
| hand05 | AC | 86 ms | 33880 KiB |
| large01 | AC | 90 ms | 33576 KiB |
| large02 | AC | 70 ms | 32804 KiB |
| large03 | AC | 94 ms | 33904 KiB |
| large04 | AC | 83 ms | 33668 KiB |
| large05 | AC | 89 ms | 33516 KiB |
| large06 | AC | 85 ms | 33436 KiB |
| large07 | AC | 74 ms | 33880 KiB |
| large08 | AC | 84 ms | 34068 KiB |
| random01 | AC | 62 ms | 32680 KiB |
| random02 | AC | 65 ms | 32616 KiB |
| random03 | AC | 64 ms | 32652 KiB |
| random04 | AC | 67 ms | 32876 KiB |
| sample01 | AC | 62 ms | 32848 KiB |
| sample02 | AC | 68 ms | 32884 KiB |
| sample03 | AC | 68 ms | 32584 KiB |