Submission #682810

#TimeUsernameProblemLanguageResultExecution timeMemory
682810smartmonkySchools (IZhO13_school)C++14
10 / 100
228 ms19548 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define pb push_back #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define int long long using namespace std; const int N = 1e5 + 1; bool comp(pair <int,int> a, pair <int,int> b){ return max(a.ff,a.ss) > max(b.ff,b.ss); } main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n, m, s; cin >> n >> m >> s; vector <int> a, b; vector <pair <int,int> > vp(n); for(int i = 0; i < n; i++){ cin >> vp[i].ff >> vp[i].ss; a.pb(vp[i].ff); b.pb(vp[i].ss); } sort(all(vp), comp); sort(rall(a)); sort(rall(b)); multiset <int> sta, stb; for(int i = 0; i < m; i++) sta.insert(a[i]); for(int i = 0; i < s; i++) stb.insert(b[i]); int lm = m, ls = s; int ans = 0; for(int i = 0; i < n; i++){ if(!s && !m)break; if(sta.find(vp[i].ff) != sta.end() && (m && !s || m && abs(vp[i].ff - a[lm]) >= abs(vp[i].ss - b[ls]))){ //cout <<"1 " << vp[i].ff << endl; ans += vp[i].ff; if(sta.find(vp[i].ff) != sta.end()) sta.erase(sta.find(vp[i].ff)); if(stb.find(vp[i].ss) != stb.end()) stb.erase(stb.find(vp[i].ss)); //cout << "what??" << endl; stb.insert(b[ls]); ls++; m--; }else if(stb.find(vp[i].ss) != stb.end() && (!m && s || s && abs(vp[i].ff - a[lm]) <= abs(vp[i].ss - b[ls]))){ //cout <<"2 " << vp[i].ss << endl; ans += vp[i].ss; if(sta.find(vp[i].ff) != sta.end()) sta.erase(sta.find(vp[i].ff)); if(stb.find(vp[i].ss) != sta.end()) stb.erase(stb.find(vp[i].ss)); sta.insert(a[lm]); lm++; s--; } } cout << ans; }

Compilation message (stderr)

school.cpp:18:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   18 | main(){
      | ^~~~
school.cpp: In function 'int main()':
school.cpp:42:44: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   42 |   if(sta.find(vp[i].ff) != sta.end() && (m && !s || m && abs(vp[i].ff - a[lm]) >= abs(vp[i].ss - b[ls]))){
      |                                          ~~^~~~~
school.cpp:53:51: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   53 |   }else if(stb.find(vp[i].ss) != stb.end() && (!m && s || s && abs(vp[i].ff - a[lm]) <= abs(vp[i].ss - b[ls]))){
      |                                                ~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...