This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
long long A[1005], B[1005];
vector<long long> tmp;
vector< pair<long long,long long> > lst;
long long find_maximum(int k, vector<vector<int>> x) {
long long N = x.size(), M = x[0].size();
for (long long i = 0; i < N; ++i) {
long long sum = 0;
for (long long j = 0; j < M; ++j) sum += x[i][j], tmp.push_back(x[i][j]);
lst.emplace_back(sum,i);
}
sort(lst.begin(),lst.end());
sort(tmp.begin(),tmp.end());
long long zero = 0, one = 0, val = 0;
for (long long i = 0; i < N*k/2; ++i) {
if (tmp[i] == 0) zero++;
else one++, val--;
if (tmp[N*M-i-1] == 0) zero++;
else one++, val++;
}
memset(A,0,sizeof(A)); memset(B,0,sizeof(B));
for (long long i = 0; i < N; ++i)
while (B[i] < M && x[i][B[i]] == 0)
B[i]++;
vector< vector<int> > ans (N, vector<int>(M,-1));
for (long long i = 0; i < N; ++i) {
long long n = lst[i].second;
for (long long j = 0; j < k; ++j) {
if (zero != 0 && A[n] < M && x[n][A[n]] == 0) zero--, ans[n][A[n]] = j, A[n]++;
else one--, ans[n][B[n]] = j, B[n]++;
}
}
allocate_tickets(ans);
return val;
}
# | 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... |