제출 #1291764

#제출 시각아이디문제언어결과실행 시간메모리
1291764lambd47카니발 티켓 (IOI20_tickets)C++20
25 / 100
518 ms85556 KiB
#include<bits/stdc++.h> #include "tickets.h" using namespace std; #define ll long long #define L(i,j,k) for(int i=(j);i<=(k);i++) #define R(i,j,k) for(int i=(j);i>=(k);i--) #define sz(v) ((int)(v).size()) #define all(v) (v).begin(),(v).end() long long find_maximum(int k, std::vector<std::vector<int>> x) { int n = x.size(); int m = x[0].size(); vector<vector<int>> answer(n,vector<int>(m,-1)); vector<vector<int>> ord(n,vector<int>(m)); vector<array<int,3>> tudao; vector<vector<bool>> tipo(n,vector<bool>(m,1));//grande ou pequeno ll resp=0; L(i,0,n-1){ L(j,0,m-1){ tudao.push_back({x[i][j],i,j}); resp+=x[i][j]; } } sort(all(tudao)); L(i,0,(n/2)*m-1){ tipo[tudao[i][1]][tudao[i][2]]=0; resp-=2*tudao[i][0];; } L(i,0,n-1){ iota(all(ord[i]),0); sort(all(ord[i]),[&](int a, int b){ return x[i][a]<x[i][b]; }); } vector<int> l(n,0); vector<int> r(n,m-1); L(round,0,k-1){ int neg=0; int pos=0; L(i,0,n-1){ if(tipo[i][l[i]]==tipo[i][r[i]]){ if(tipo[i][l[i]]==1){ pos++; } else neg++; } } L(i,0,n-1){ if(tipo[i][l[i]]==tipo[i][r[i]]){ if(tipo[i][l[i]]==1){ answer[i][r[i]]=round; r[i]--; } else{ answer[i][l[i]]=round; l[i]++; } } else{ if(pos<n/2){ pos++; answer[i][r[i]]=round; r[i]--; } else{ neg++; answer[i][l[i]]=round; l[i]++; } } } } allocate_tickets(answer); return resp; }
#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...