제출 #1291681

#제출 시각아이디문제언어결과실행 시간메모리
1291681lambd47카니발 티켓 (IOI20_tickets)C++20
27 / 100
529 ms85420 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
    L(i,0,n-1){
        L(j,0,m-1){
            tudao.push_back({x[i][j],i,j});
        }
    }
    sort(all(tudao));
    L(i,0,(n/2)*m-1){
        tipo[tudao[i][1]][tudao[i][2]]=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);
    ll resp=0;

    L(round,0,k-1){
        vector<int> ord2(n);
        iota(all(ord2),0);
        sort(all(ord2),[&](int i, int j){
                return x[i][ord[i][l[i]]]+x[i][ord[i][r[i]]]<x[j][ord[j][l[j]]]+x[j][ord[j][r[j]]];
        });
        L(i,0,n-1){
            int j=ord2[i];
            if(i<n/2){
                answer[j][ord[j][l[j]]]=round;
                resp-=x[j][ord[j][l[j]]];
                l[j]++;
            }
            else{
                answer[j][ord[j][r[j]]]=round;
                resp+=x[j][ord[j][r[j]]];
                r[j]--;
            }
        }
    }
	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...