問題:http://codeforces.com/contest/33/problem/A
本番.
各列の歯のうち最も弱い耐久値の合計を用いる.
健康な列の歯があれば全部食えるかと思ったけど必要なかったみたい.
import java.util.*; public class A{ public static void main(String[] args){ Scanner s=new Scanner(System.in); int n=s.nextInt(),m=s.nextInt(),k=s.nextInt(); boolean[]b=new boolean[m]; Map<Integer,List<Integer>>map=new HashMap<Integer, List<Integer>>(); for(;n-->0;){ int r=s.nextInt(); if(!b[r-1]){ map.put(r,new ArrayList<Integer>()); b[r-1]=true; } map.get(r).add(s.nextInt()); } /* practice for(boolean bb:b){ if(!bb){ System.out.println(k); return; } } */ int sum=0; for(List<Integer>list:map.values()){ sum+=Collections.min(list); } System.out.println(Math.min(sum,k)); } }