結果
問題 | No.190 Dry Wet Moist |
ユーザー |
|
提出日時 | 2022-08-25 14:04:42 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,010 bytes |
コンパイル時間 | 4,435 ms |
コンパイル使用メモリ | 266,780 KB |
最終ジャッジ日時 | 2025-01-31 03:57:24 |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 3 WA * 25 |
ソースコード
#include<bits/stdc++.h> using namespace std; #include<atcoder/all> using namespace atcoder; using ll = long long; int n; vector<ll> a; void solve(){ sort(a.begin(),a.end()); for(auto &i:a)cerr<<i<<' ';cerr<<endl; for(int _ = 0;_ < 2; _++){ for(int i = 0;i<n*2;i++)a[i] *= -1; set<int> ng,pg,zero; for(int i = 0;i<n*2;i++){ if(a[i]<0)ng.insert(a[i]); else if(a[i]>0)pg.insert(a[i]); else zero.insert(a[i]); } int ans =0; for(auto &i:ng){ auto it = pg.upper_bound(-i); if(pg.end()!=it){ pg.erase(it); ans++; } } int zerocnt = zero.size(); int pgcnt = pg.size(); ans += min(zerocnt,pgcnt); pgcnt -= min(zerocnt,pgcnt); ans += pgcnt/2; cout<<ans<<' '; } map<ll,ll> mp; for(int i = 0;i<n*2;i++){ mp[a[i]]++; mp[-a[i]]+=0; } ll ans =0; for(auto &i:mp){ ans += min(i.second,mp[-i.first]); } cout<<ans/2<<endl; } signed main(){ cin.tie(nullptr); ios::sync_with_stdio(false); cin >> n; a = vector<ll>(n*2); for(auto &i:a)cin >> i; solve(); }