結果
問題 | No.11 カードマッチ |
ユーザー | srup٩(๑`н´๑)۶ |
提出日時 | 2016-07-19 16:33:28 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 5 ms / 5,000 ms |
コード長 | 1,180 bytes |
コンパイル時間 | 515 ms |
コンパイル使用メモリ | 62,992 KB |
実行使用メモリ | 7,756 KB |
最終ジャッジ日時 | 2024-10-15 17:20:17 |
合計ジャッジ時間 | 1,453 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,820 KB |
testcase_01 | AC | 2 ms
6,816 KB |
testcase_02 | AC | 2 ms
6,816 KB |
testcase_03 | AC | 2 ms
6,816 KB |
testcase_04 | AC | 4 ms
7,632 KB |
testcase_05 | AC | 2 ms
6,816 KB |
testcase_06 | AC | 5 ms
6,816 KB |
testcase_07 | AC | 3 ms
6,816 KB |
testcase_08 | AC | 4 ms
7,756 KB |
testcase_09 | AC | 5 ms
6,816 KB |
testcase_10 | AC | 5 ms
7,756 KB |
testcase_11 | AC | 5 ms
7,628 KB |
testcase_12 | AC | 5 ms
7,632 KB |
testcase_13 | AC | 4 ms
6,816 KB |
testcase_14 | AC | 4 ms
6,820 KB |
testcase_15 | AC | 2 ms
6,816 KB |
testcase_16 | AC | 3 ms
6,816 KB |
testcase_17 | AC | 2 ms
6,816 KB |
testcase_18 | AC | 2 ms
6,816 KB |
ソースコード
#include <iostream> #include <algorithm> #include <vector> using namespace std; #define rep(i,n) for(int i=0;i<(n);i++) const int MAX_W = 1000010, MAX_H = 1000010; int cnt[MAX_W] = {0}; bool mark[MAX_W] = {false}; bool num[MAX_H] = {false}; int main(void){ int w, h, n, ans = 0; cin >> w >> h >> n; vector<pair<int, int> > sk(n); rep(i, n){ int s, k; cin >> s >> k; s--; k--; sk[i].first = s; sk[i].second = k; } //マークが同じで数字が異なるものを求める //一つのマークごとにいくつの数字があるかをメモっておく rep(i, n)cnt[sk[i].first]++; rep(i, w){ if(cnt[i] != 0) ans += (h - cnt[i]); } // cout << "ans" << ans << endl; // 数字が同じでマークが異なるものを求める //使用されているマークを調べる rep(i, n) mark[sk[i].first] = true; int cnt_mark = w; rep(i, w){ if(mark[i]) cnt_mark--; } // cout << "cnt_mark" << cnt_mark << endl; //使用されている数字を調べる rep(i, n) num[sk[i].second] = true; int cnt_num = 0; rep(i, h){ if(num[i]) cnt_num++; } // cout << "cnt_num" << cnt_num << endl; ans += cnt_mark * cnt_num; cout << ans << endl; return 0; }