이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "tickets.h"
#include<bits/stdc++.h>
using namespace std;
long long find_maximum(int k, vector<vector<int>> x)
{
int n = x.size();
int m = x[0].size();
int i,j;
vector<int> it;
vector<int> cnt[2];
vector<vector<int>> ans;
vector<pair<int,int>> pq;
long long w=0;
for(i=0;i<n;i++)
it.push_back(m-1);
for(i=0;i<n;i++)
{
ans.push_back({});
for(j=0;j<m;j++)
ans.back().push_back(-1);
}
for(i=0;i<n;i++)
{
for(j=0;j<k;j++)
w-=x[i][j];
}
for(i=0;i<n;i++)
{
for(j=m-1;j>=m-k;j--)
pq.push_back({-x[i][j]-x[i][j-m+k],i});
}
sort(pq.begin(),pq.end());
for(i=0;i<k*n/2;i++)
{
w-=pq[i].first;
it[pq[i].second]--;
}
for(i=0;i<n;i++)
{
cnt[0].push_back(m-1-it[i]);
cnt[1].push_back(k-cnt[0].back());
}
while(k--)
{
vector<pair<int,int>> mx;
for(i=0;i<n;i++)
mx.push_back({-cnt[0][i],i});
sort(mx.begin(),mx.end());
for(i=0;i<n/2;i++)
ans[mx[i].second][m-1-(--cnt[0][mx[i].second])]=k;
for(i=n/2;i<n;i++)
ans[mx[i].second][--cnt[1][mx[i].second]]=k;
}
allocate_tickets(ans);
return w;
}
# | 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... |