結果
問題 | No.11 カードマッチ |
ユーザー |
|
提出日時 | 2017-03-31 21:04:32 |
言語 | Java (openjdk 23) |
結果 |
AC
|
実行時間 | 149 ms / 5,000 ms |
コード長 | 886 bytes |
コンパイル時間 | 3,637 ms |
コンパイル使用メモリ | 78,540 KB |
実行使用メモリ | 41,592 KB |
最終ジャッジ日時 | 2024-07-07 04:47:55 |
合計ジャッジ時間 | 6,810 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 19 |
ソースコード
import java.util.Scanner; import java.util.TreeSet; public class Cardmatch { public static void main(String[] args) { Scanner s = new Scanner(System.in); int W = s.nextInt(),H = s.nextInt(),N = s.nextInt(); int[] S = new int[N]; int[] K = new int[N]; TreeSet<Integer> Mark = new TreeSet<>(); TreeSet<Integer> Number = new TreeSet<>(); for(int i = 0;i < N ;i++){ S[i] = s.nextInt(); K[i] = s.nextInt(); } s.close(); long count = 0; for(int i = 0;i < N;i++){ if(Mark.contains(S[i]) && Number.contains(K[i])){ count--; }else if(Mark.contains(S[i])){ count += (W - Mark.size()-1); Number.add(K[i]); }else if(Number.contains(K[i])){ count += (H - Number.size()-1); Mark.add(S[i]); }else{ count += (W-Mark.size() + H-Number.size() -2); Mark.add(S[i]); Number.add(K[i]); } } System.out.println(count); } }