제출 #1239521

#제출 시각아이디문제언어결과실행 시간메모리
1239521Muhammad_Aneeq카니발 티켓 (IOI20_tickets)C++17
27 / 100
377 ms51308 KiB
#include "tickets.h" #include <vector> #include <queue> #include <iostream> using namespace std; #define ll long long int const N=1510; long long dp[N]={}; ll mul(ll a,ll b) { return a*b; } long long find_maximum(int k, vector<vector<int>> a) { int n = a.size(); int m = a[0].size(); long long ans=0,sm=0; priority_queue<pair<ll,ll>>pq; int pos[n]={}; for (int i=0;i<n;i++) sm+=a[i][m-1]; int sz=n/2; for (int i=0;i<n;i++) { pq={}; sm-=a[i][m-1]; ll cur=0; for (int j=0;j<n;j++) { if (j==i) continue; pq.push({a[j][0]+a[j][m-1],j}); cur+=a[j][0]+a[j][m-1]; if (pq.size()>=sz) { cur-=pq.top().first; pq.pop(); } } int ind=-1; for (int j=0;j<m;j++) { ll an=sm-mul(a[i][j],n-1)-(cur-mul(2,mul(sz-1,a[i][j]))); if (an>ans) { // cout<<i<<' '<<j<<endl; ans=an; ind=j; } } if (ind!=-1) { for (int j=0;j<n;j++) pos[j]=m-1; pos[i]=ind; while (pq.size()) { pos[pq.top().second]=0; pq.pop(); } } sm+=a[i][m-1]; } vector<vector<int>>ret(n,vector<int>(m,-1)); for (int j=0;j<n;j++) ret[j][pos[j]]=0; allocate_tickets(ret); 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...