#include <bits/stdc++.h>
#include "tickets.h"
#define ll long long
#define pii pair<int,int>
using namespace std;
struct Data{
int l,r,id;
bool operator < (const Data &o) const {
if(l!=o.l) return l < o.l;
return r < o.r;
}
};
const int MN = 1505;
int N,M,st[MN],en[MN],h[MN],hh[MN];
ll ans;
bool vis[MN];
long long find_maximum(int k, vector<vector<int>> x) {
int n = x.size();
int m = x[0].size();
vector<vector<int>> answer(n);
priority_queue<pii> pq;
for(int i=0; i<n; i++) en[i] = m-1, st[i]=k-1, h[i] = m-1, answer[i].resize(m);
for(int i=0; i<n; i++) for(int j=0; j<m; j++) answer[i][j] = -1;
for(int i=0; i<n; i++){
for(int j=0; j<k; j++) ans -= x[i][j], answer[i][j] = 1;
pq.push({x[i][st[i]]+x[i][en[i]],i});
}
for (int t = 0; t < k*n/2; t++) {
auto tmp = pq.top(); pq.pop();
int i = tmp.second, val = tmp.first;
ans += val;
answer[i][st[i]] = -1;
answer[i][en[i]] = 1;
st[i]--; en[i]--;
if(st[i]==-1) continue;
pq.push({x[i][st[i]]+x[i][en[i]],i});
}
for(int t=0; t<k; t++){
vector<pii> v(n);
for(int i=0; i<n; i++){
vis[i] = 0;
v[i] = {-(h[i]-en[i]),i};
// cerr << "PUSHING: " << i << ' ' << h[i] << ' ' << en[i] << ' ' << -(h[i]-en[i]) << endl;
}
sort(v.begin(),v.end());
for(int i=0; i<n; i++){
int id = v[i].second;
if(i<n/2){
answer[id][h[id]] = t;
h[id]--;
}
else{
answer[id][hh[id]] = t;
hh[id]++;
}
}
}
allocate_tickets(answer);
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |