Submission #722028

#TimeUsernameProblemLanguageResultExecution timeMemory
722028danikoynov카니발 티켓 (IOI20_tickets)C++14
27 / 100
471 ms52320 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; int N, M, K; vector < vector < int > > answer; struct element { ll max_pos, min_pos, delta, row; bool operator < (const element &e) const { return delta < e.delta; } }; long long find_maximum(int k, vector < vector < int > > x) { N = x.size(); M = x[0].size(); K = k; answer.resize(N); for (int i = 0; i < N; i++) { answer[i].resize(M, - 1); } ll max_prize = 0; if (M == 1) { vector < int > d; for (int i = 0; i < N; i ++) d.push_back(x[i][0]); sort(d.begin(), d.end()); for (int i = 0; i < N / 2; i ++) max_prize = max_prize - (ll)(d[i]); for (int i = N / 2; i < N; i ++) max_prize = max_prize + (ll)(d[i]); for (int i = 0; i < N; i ++) answer[i][0] = 0; } else if (K == 1) { vector < element > arr; for (int i = 0; i < N; i ++) { element cur; cur.row = i; cur.min_pos = cur.max_pos = 0; for (int j = 1; j < M; j ++) { if (x[i][j] < x[i][cur.min_pos]) cur.min_pos = j; if (x[i][j] > x[i][cur.max_pos]) cur.max_pos = j; } cur.delta = (x[cur.row][cur.max_pos] + x[cur.row][cur.min_pos]); arr.push_back(cur); } sort(arr.begin(), arr.end()); for (int i = 0; i < N; i ++) { element cur = arr[i]; if (i < N / 2) { max_prize = max_prize - x[cur.row][cur.min_pos]; answer[cur.row][cur.min_pos] = 0; } else { max_prize = max_prize + x[cur.row][cur.max_pos]; answer[cur.row][cur.max_pos] = 0; } } } allocate_tickets(answer); return max_prize; }
#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...