Submission #723886

#TimeUsernameProblemLanguageResultExecution timeMemory
723886NemanjaSo2005Carnival Tickets (IOI20_tickets)C++14
100 / 100
790 ms97100 KiB
#include<bits/stdc++.h> #include "tickets.h" #define ll long long using namespace std; ll N,M,K,vred=0,pok[1505]; vector<vector<int>> kako,koliko; struct slog{ int gde; ll dob; bool operator < (const slog &a) const{ return dob<a.dob; } }pp; vector<int> p[1505],m[1505]; int niz[1505]; bool cmp(int a,int b){ return p[a].size()<p[b].size(); } priority_queue<slog> PQ; void stavi(int gde){ if(pok[gde]<0) return; pp.gde=gde; pp.dob=koliko[gde][pok[gde]]+koliko[gde][pok[gde]+M-K]; PQ.push(pp); return; } ll find_maximum(int k,vector<vector<int>> d){ kako=d; koliko=d; for(int i=0;i<kako.size();i++) for(int j=0;j<kako[i].size();j++) kako[i][j]=0; K=k; N=d.size(); M=d[0].size(); for(int i=0;i<N;i++){ pok[i]=K-1; for(int j=0;j<K;j++){ kako[i][j]=-1; vred-=koliko[i][j]; } stavi(i); } for(int it=1;it<=N*K/2;it++){ int gde=PQ.top().gde; // cout<<gde<<" "<<pok[gde]<<endl; vred+=PQ.top().dob; PQ.pop(); kako[gde][pok[gde]]=0; kako[gde][pok[gde]+M-K]=1; pok[gde]--; stavi(gde); } for(int i=0;i<N;i++){ niz[i]=i; for(int j=0;j<M;j++){ if(kako[i][j]==0) continue; if(kako[i][j]==1) p[niz[i]].push_back(j); else m[niz[i]].push_back(j); } } for(int i=0;i<kako.size();i++) for(int j=0;j<kako[i].size();j++) kako[i][j]=-1; for(int it=0;it<K;it++){ // cout<<it<<endl; sort(niz,niz+N,cmp); //for(int i=0;i<N;i++) // cout<<niz[i].m.size()<<" "<<niz[i].p.size()<<endl; for(int i=0;i<N/2;i++){ kako[niz[i]][m[niz[i]].back()]=it; m[niz[i]].pop_back(); } for(int i=N/2;i<N;i++){ kako[niz[i]][p[niz[i]].back()]=it; p[niz[i]].pop_back(); } } allocate_tickets(kako); return vred; }

Compilation message (stderr)

tickets.cpp: In function 'long long int find_maximum(int, std::vector<std::vector<int> >)':
tickets.cpp:31:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |    for(int i=0;i<kako.size();i++)
      |                ~^~~~~~~~~~~~
tickets.cpp:32:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |       for(int j=0;j<kako[i].size();j++)
      |                   ~^~~~~~~~~~~~~~~
tickets.cpp:66:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |    for(int i=0;i<kako.size();i++)
      |                ~^~~~~~~~~~~~
tickets.cpp:67:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   67 |       for(int j=0;j<kako[i].size();j++)
      |                   ~^~~~~~~~~~~~~~~
#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...