제출 #427899

#제출 시각아이디문제언어결과실행 시간메모리
427899lakshith_카니발 티켓 (IOI20_tickets)C++14
27 / 100
692 ms53920 KiB
#include "tickets.h" #include <bits/stdc++.h> #define ll long long #define int long long #define what_is(a) cout << #a << " is " << a << "\n" using namespace std; ll diff(int val,vector<int> vec){ ll r = 0; for(int a:vec){ r += abs(a-val); //cout << abs(a-val) << " "; } //cout << "\n"; return r; } struct node{ int n; int MIN; int MAX; int minI; int maxI; bool what; }; bool compare(node a,node b){ return a.MIN+a.MAX < b.MIN+b.MAX; } long long find_maximum(signed k, std::vector<std::vector<signed>> x) { int n = x.size(); int m = x[0].size(); assert(k==1); int r = 0; vector<node> vec; for(int i=0;i<n;i++){ int MAX = -1,maxI=0; for(int j=0;j<m;j++) if(MAX<x[i][j])MAX=x[i][j],maxI=j; int MIN = INT_MAX,minI=0; for(int j=0;j<m;j++) if(MIN>x[i][j])MIN=x[i][j],minI=j; //cout << minI << " " << maxI << "\n"; vec.push_back((node){i,MIN,MAX,minI,maxI,true}); r+=MAX; } sort(vec.begin(),vec.end(),compare); for(int i=0;i<n/2;i++){ r-=vec[i].MIN+vec[i].MAX; vec[i].what=false; } //assert(vec.size()==n); vector<vector<signed>> ans; for(int i=0;i<n;i++) ans.push_back(vector<signed>(m)); for(int i=0;i<n;i++) for(int j=0;j<m;j++) ans[i][j] = -1; for(int i=0;i<n;i++) if(vec[i].what)ans[vec[i].n][vec[i].maxI]=0; else ans[vec[i].n][vec[i].minI]=0; allocate_tickets(ans); return r; }
#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...