# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
170555 | 2019-12-25T15:40:15 Z | mdn2002 | Unija (COCI17_unija) | C++14 | 0 ms | 0 KB |
#include<bits/stdc++.h> using namespace std; const long long mod=998244353; multiset<int>ms; int n,k; map<int,int>a; int v[1000006]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); //freopen("lemonade.in","r",stdin); //freopen("lemonade.out","w",stdout); cin>>n; for(int i=0;i<n;i++) { int x,y; cin>>x>>y; x/=2; y/=2; if(a[y+1]==0)a[y+1]=++k; if(v[a[y+1]]==0) { v[a[y+1]]=x; ms.insert(x); continue; } if(*v[a[y+1]].begin()<x) { ms.erase(ms.find(*v[a[y+1]].begin())); ms.insert(x); v[a[y+1]]]x; } } long long ans=0; for(int i=1;i<=10000004;i++) { if(v[a[i]]!=0) { int x=v[a[i]]; ms.erase(ms.find(x)); } if(ms.size()==0)break; ans+=*--ms.end(); } cout<<ans*4; }