結果
問題 | No.706 多眼生物の調査 |
ユーザー | 理解した |
提出日時 | 2018-06-30 23:32:53 |
言語 | C++17 (gcc 12.3.0 + boost 1.83.0) |
結果 |
AC
|
実行時間 | 12 ms / 2,000 ms |
コード長 | 1,613 bytes |
コンパイル時間 | 2,233 ms |
コンパイル使用メモリ | 210,992 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-01 01:02:38 |
合計ジャッジ時間 | 2,572 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,812 KB |
testcase_01 | AC | 2 ms
6,816 KB |
testcase_02 | AC | 2 ms
6,940 KB |
testcase_03 | AC | 2 ms
6,940 KB |
testcase_04 | AC | 3 ms
6,940 KB |
testcase_05 | AC | 6 ms
6,940 KB |
testcase_06 | AC | 12 ms
6,940 KB |
testcase_07 | AC | 2 ms
6,944 KB |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { cout << "競技プログラミングとは" << endl; printf("その1、ACが正義である\n"); cerr << "その2、ACすれば全て許される" << '\n'; perror("プロ"); puts("いいえ"); return 0; } // Union Find Tree (Disjoint Set) // 頂点と頂点が同じグラフ上にあるかを調べる // unite(頂点、頂点) 頂点と頂点を繋げてグラフにする // same(頂点、頂点) 2つの頂点が同じグラフかを返す class UnionFind { vector<int> w, h; int p; int get(int x); int next(int a, int b); void set(int x, int a); public: UnionFind(); void unite(int x, int y); bool same(int x, int y); } uf; void UnionFind::unite(int x, int y) { int a = get(x); int b = get(y); int c = next(a, b); set(x, c); set(y, c); } bool UnionFind::same(int x, int y) { int a = get(x); int b = get(y); return a == b; } int UnionFind::get(int x) { int a = w[x]; while (a != h[a]) a = h[a]; return w[x] = a; } int UnionFind::next(int a, int b) { if (a && b) return a < b ? h[b] = a : h[a] = b; if (a || b) return a | b; ++p; return h[p] = p; } void UnionFind::set(int x, int a) { w[x] = a; } UnionFind::UnionFind() : w(1000), h(1000), p(0) { int n; map<int,int> m; cin >> n; while (n--) { string s; cin >> s; m[s.size()-2]++; } int ans = 0; for (auto i : m) if (i.second >= m[ans]) ans = i.first; cout << ans << endl; exit(0); }