제출 #1239519

#제출 시각아이디문제언어결과실행 시간메모리
1239519MuhammadSaram카니발 티켓 (IOI20_tickets)C++20
25 / 100
2735 ms133436 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define all(v) v.begin(), v.end() long long find_maximum(int k, vector<vector<int>> a) { int n=a.size(), m=a[0].size(); vector<int> val; multiset<int> se1,se2; ll ans=0; for (int i=0;i<n;i++) for (int j:a[i]) val.push_back(j),ans+=j; sort(all(val)); for (int i=0;i<n*m;i++) if (i<n*m/2) se1.insert(val[i]),ans-=val[i]*2; else se2.insert(val[i]); int id[n][2], cnt[n]={}; for (int i=0;i<n;i++) { id[i][0]=0, id[i][1]=m-1; for (int j=m-1;j>=0;j--) { auto it=se1.find(a[i][j]); if (it!=se1.end()) se1.erase(it); else cnt[i]++, se2.erase(se2.find(a[i][j])); } } set<pair<int,int>> se; vector<vector<int>> v(n, vector<int>(m,-1)); for (int r=0;r<k;r++) { for (int i=0;i<n;i++) se.insert({cnt[i],i}); for (int i=0;i<n;i++) { pair<int,int> p=*se.begin();se.erase(p); if (i<n/2) v[p.second][id[p.second][0]++]=r; else v[p.second][id[p.second][1]--]=r, cnt[p.second]--; } } allocate_tickets(v); return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...