제출 #415905

#제출 시각아이디문제언어결과실행 시간메모리
415905abdzag카니발 티켓 (IOI20_tickets)C++17
11 / 100
4 ms972 KiB
#include<bits/stdc++.h> #include "tickets.h" #define rep(i,a,b) for(int i=int(a);i<int(b);i++) #define rrep(i,a,b) for(int i=int(a);i>int(b);i--) #define trav(a,v) for(auto& a: v) #define sz(v) v.size() #define all(v) v.begin(),v.end() #define vi vector<int> typedef long long ll; typedef long double ld; typedef unsigned long long ull; const long long inf = 1e15; using namespace std; vector<bool> visited(1e6); vector<vector<ll>> g; vector<ll> v; ll curr = 0; bool done = 1; long long find_maximum(int k, std::vector<std::vector<int>> x) { vector<ll> v; ll n = x.size(); ll m = x[0].size(); ll ans = 0; std::vector<std::vector<int>> answer(x.size(),vector<int>(x[0].size(),-1)); set<pair<ll, pair<ll, ll>>> greatest; set<pair<ll, pair<ll, ll>>> smallest; rep(i, 0, k) { v.clear(); smallest.clear(); greatest.clear(); rep(j, 0, n) { rep(z, 0, m) { if (answer[j][z] == -1) { smallest.emplace(x[j][z], make_pair(j, z)); break; } } rrep(z, m-1, -1) { if (answer[j][z] == -1) { greatest.emplace(-x[j][z], make_pair(j, z)); break; } } } ll counter = 0; trav(a, smallest) { answer[a.second.first][a.second.second] = i; v.push_back(a.first); counter++; if (counter == k / 2)break; } counter = 0; trav(a, greatest) { if (answer[a.second.first][a.second.second] == -1) { answer[a.second.first][a.second.second] = i; v.push_back(-a.first); counter++; } if (counter == k / 2)break; } ll b = v[v.size() / 2]; trav(a, v)ans += abs(a - b); } 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...