Submission #518380

#TimeUsernameProblemLanguageResultExecution timeMemory
518380Plurm카니발 티켓 (IOI20_tickets)C++17
11 / 100
76 ms676 KiB
#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();
	vector<vector<int>> answer;
	for (int i = 0; i < n; i++) {
		vector<int> row(m);
		for (int j = 0; j < m; j++) {
			row[j] = -1;
		}
		answer.push_back(row);
	}
  long long ans = 0ll;
  for(int t = 0; t < k; t++){
    set<int> used_rows;
    for(int tt = 0; tt < n/2; tt++){
      int mx = -1;
      int mrow = -1;
      int mcol = -1;
      for(int i = 0; i < n; i++){
        if(used_rows.count(i)) continue;
        for(int j = 0; j < m; j++){
          if(answer[i][j] == -1){
            if(x[i][j] > mx){
              mx = x[i][j];
              mrow = i;
              mcol = j;
            }
          }
        }
      }
      used_rows.insert(mrow);
      answer[mrow][mcol] = t;
      ans += mx;
      int mn = 1e9+1;
      mrow = -1;
      mcol = -1;
      for(int i = 0; i < n; i++){
        if(used_rows.count(i)) continue;
        for(int j = 0; j < m; j++){
          if(answer[i][j] == -1){
            if(x[i][j] < mn){
              mn = x[i][j];
              mrow = i;
              mcol = j;
            }
          }
        }
      }
      used_rows.insert(mrow);
      answer[mrow][mcol] = t;
      ans -= mn;
    }
  }
	allocate_tickets(answer);
	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...