제출 #306472

#제출 시각아이디문제언어결과실행 시간메모리
306472giorgikob카니발 티켓 (IOI20_tickets)C++14
11 / 100
2 ms768 KiB
#include "tickets.h" #include <vector> #include<bits/stdc++.h> #define ll long long #define ff first #define ss second #define pb push_back using namespace std; long long find_maximum(int k, std::vector<std::vector<int>> x) { int n = x.size(); int m = x[0].size(); bool ok = true; for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ if(x[i][j] > 1){ ok = false; } } } vector<vector<int>> answer(n, vector<int>(m,-1)); ll result = 0; if(m == 1){ vector<vector<int>> answer(n, vector<int>(m,0)); vector<int>v; for(int i = 0; i < n; i++) v.pb(x[i][0]); sort(v.begin(),v.end()); ll result = 0; for(int i = 0; i < n; i++) result += abs(v[i]-v[n/2]); allocate_tickets(answer); return result; } if(ok){ /*vector< pair<vector<int>,int> > v(n); for(int i = 0; i < n; i++){ v[i] = {x[i],i}; }*/ sort(x.begin(),x.end()); vector<int>a(m,0); for(int j = 0; j < m; j++){ int sum = 0; for(int i = 0; i < n; i++){ sum += x[i][j]; } a[j] = max(sum,n-sum); } int l = 0, r = m-1; for(int i = 0; i < k; i++){ if(a[l] > a[r]){ result += a[l]; for(int j = 0; j < n; j++){ answer[l][j] = i; } l++; } else { result += a[r]; for(int j = 0; j < n; j++){ answer[r][j] = i; } r--; } } allocate_tickets(answer); return result; } allocate_tickets(answer); return result; }
#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...