제출 #720619

#제출 시각아이디문제언어결과실행 시간메모리
720619bin9638카니발 티켓 (IOI20_tickets)C++17
27 / 100
556 ms110664 KiB
#include <bits/stdc++.h> #ifndef SKY #include "tickets.h" #endif // SKY using namespace std; #define N 1510 #define ll long long #define fs first #define sc second #define ii pair<ll,int> #define pb push_back int n,m; deque<ii>cost[N]; #ifdef SKY void allocate_tickets(vector<vector<int>>kq) { for(int i=0;i<n;i++) { for(int j=0;j<m;j++) cout<<kq[i][j]<<" "; cout<<endl; } } #endif // SKY bool SS(const int&u,const int&v) { return cost[u].front().fs+cost[u].back().fs<cost[v].front().fs+cost[v].back().fs; } ll find_maximum(int k, vector<vector<int>> xxx) { n=xxx.size(); m=xxx[0].size(); for(int i=0;i<n;i++) for(int j=0;j<m;j++) cost[i].pb({xxx[i][j],j}); vector<int>s; for(int i=0;i<n;i++) s.pb(i); vector<vector<int>>kq; kq.resize(n,vector<int>(m,-1)); ll res=0; for(int t=0;t<k;t++) { sort(s.begin(),s.end(),SS); for(int i=0;i<n;i++) if(i*2<n) { res-=cost[s[i]].front().fs; kq[s[i]][cost[s[i]].front().sc]=t; cost[s[i]].pop_front(); }else { res+=cost[s[i]].back().fs; kq[s[i]][cost[s[i]].back().sc]=t; cost[s[i]].pop_back(); } } allocate_tickets(kq); return res; } #ifdef SKY int main() { freopen("A.inp","r",stdin); freopen("A.out","w",stdout); ios::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); int n,m,k; cin>>n>>m>>k; vector<vector<int>>x; x.resize(n,vector<int>(m,0)); for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin>>x[i][j]; cout<<find_maximum(k,x); return 0; } #endif
#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...