Submission #527646

#TimeUsernameProblemLanguageResultExecution timeMemory
527646DeepessonCarnival Tickets (IOI20_tickets)C++17
27 / 100
493 ms66620 KiB
#include <bits/stdc++.h>
#include "tickets.h"

typedef std::pair<int,int> pii;
long long find_maximum(int k, std::vector<std::vector<int>> x) {
    int N=x.size(),M=x[0].size();
    int lado=(k*N)/2;
	int pegou[N]={};
    std::priority_queue<pii> queue;
    std::vector<std::deque<int>> copia;
    for(int i=0;i!=N;++i){
        std::deque<int> k;
        for(auto&z:x[i])k.push_back(z);
        copia.push_back(k);
    }
    long long res=0;
    std::deque<int> remove[N];
    for(int i=0;i!=N;++i){
        for(int j=0;j!=k;++j){
            remove[i].push_back(x[i][j]);
            res-=x[i][j];
        }
    }
    for(int i=0;i!=N;++i){
        if(remove[i].size()){
            queue.push({remove[i].back()+copia[i].back(),i});
        }
    }
    std::vector<int> pega[N]={};
    for(int i=0;i!=lado;++i){
        auto __ = queue.top();
        queue.pop();
        res+=__.first;
        copia[__.second].pop_back();
        pega[__.second].push_back(copia[__.second].size());
        remove[__.second].pop_back();
        if(remove[__.second].size()){
            queue.push({remove[__.second].back()+copia[__.second].back(),__.second});
        }
    }
    std::vector<std::vector<int>> ordem;
    for(int i=0;i!=N;++i){
        std::vector<int> p;
        for(int j=0;j!=M;++j)p.push_back(-1);
        ordem.push_back(p);
    }
    int adds[k]={},subs[k]={};
    for(int i=0;i!=N;++i){
        int rem = remove[i].size();
        int cur=0;
        std::vector<int> falta;
        for(int j=0;j!=rem;++j){
            if(subs[cur]<(N/2)){
                subs[cur]++;
                ordem[i][j]=cur;
            }else {falta.push_back(cur);--j;}
            ++cur;
        }
        while(cur<k){falta.push_back(cur);++cur;}
        cur=0;
        for(int j=copia[i].size();j!=x[i].size();++j){
            ordem[i][j]=falta[cur];
            ++cur;
        }
    }
    allocate_tickets(ordem);
	return res;
}

Compilation message (stderr)

tickets.cpp: In function 'long long int find_maximum(int, std::vector<std::vector<int> >)':
tickets.cpp:61:36: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |         for(int j=copia[i].size();j!=x[i].size();++j){
      |                                   ~^~~~~~~~~~~~~
tickets.cpp:8:6: warning: unused variable 'pegou' [-Wunused-variable]
    8 |  int pegou[N]={};
      |      ^~~~~
tickets.cpp:47:9: warning: unused variable 'adds' [-Wunused-variable]
   47 |     int adds[k]={},subs[k]={};
      |         ^~~~
#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...