結果
問題 | No.33 アメーバがたくさん |
ユーザー | NotationNap |
提出日時 | 2015-05-01 02:10:19 |
言語 | C++11 (gcc 11.4.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 1,066 bytes |
コンパイル時間 | 1,614 ms |
コンパイル使用メモリ | 176,436 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-24 10:09:09 |
合計ジャッジ時間 | 2,163 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 2 ms
6,816 KB |
testcase_01 | AC | 2 ms
6,944 KB |
testcase_02 | AC | 2 ms
6,940 KB |
testcase_03 | AC | 2 ms
6,940 KB |
testcase_04 | AC | 1 ms
6,944 KB |
testcase_05 | AC | 2 ms
6,940 KB |
testcase_06 | AC | 2 ms
6,940 KB |
testcase_07 | AC | 2 ms
6,944 KB |
testcase_08 | AC | 2 ms
6,940 KB |
testcase_09 | AC | 2 ms
6,940 KB |
testcase_10 | AC | 1 ms
6,944 KB |
ソースコード
#include "bits/stdc++.h" using namespace std; typedef long long Int; #define REP(i,n) for(int (i)=0;(i)<(int)(n);++(i)) Int solve(vector<Int> v, Int D, Int T) { vector<pair<Int, int>> rs; for (auto x : v) { x /= D; rs.emplace_back(make_pair(x - T, +1)); rs.emplace_back(make_pair(x + T, -1)); } auto comp = [](pair<Int, int> a, pair<Int, int> b) { return a.first != b.first ? a.first < b.first : a.second > b.second; }; sort(rs.begin(), rs.end(), comp); Int res = 0; int open_count = 0; Int open_pos = -1; for (auto r : rs) { open_count += r.second; if (open_count == 0) { Int close_pos = r.first; res += close_pos - open_pos + 1; } if (open_count == 1 && r.second == 1) { open_pos = r.first; } } return res; } int main() { int N, D, T; cin >> N >> D >> T; Int x[100]; REP(i, N) { cin >> x[i]; x[i] += 1000000000; } map<int, vector<Int> > mp; REP(i, N){ mp[x[i] % D].push_back(x[i]); } Int ans = 0; for (auto it = mp.begin(); it != mp.end(); ++it) { ans += solve(it->second, D, T); } cout << ans << endl; }