Submission #246169

#TimeUsernameProblemLanguageResultExecution timeMemory
246169HalitSlagalica (COCI19_slagalica2)C++17
35 / 70
710 ms10284 KiB
#include <bits/stdc++.h> using namespace std; bool s = 1; priority_queue<long long> heap[9]; vector<long long> ans; map<long long, long long> val; long long n,p,v,lst_3, lst_2; int main(){ cin >> n; for(int i = 1;i <= n;i++){ cin >> p >> v; heap[p].push(-v); val[v] = p; } if(heap[5].size() + heap[6].size() != 1 || heap[7].size() + heap[8].size() != 1) goto CANNOT; if(heap[5].size()){ s ^= 1;// -> ans.push_back(-heap[5].top()); } else{ ans.push_back(-heap[6].top()); } while(heap[1].size() + heap[4].size()){ if(s == 1){ if(heap[1].size() == 0) goto CANNOT; ans.push_back(-heap[1].top()); heap[1].pop(); } else{ if(heap[4].size() == 0) goto CANNOT; ans.push_back(-heap[4].top()); heap[4].pop(); } s ^= 1; } if((s == 0? heap[8].size() == 0 : heap[7].size() == 0) ) goto CANNOT; ans.push_back(-(heap[8].size() ? heap[8].top() : heap[7].top() ) ); for(int i = ans.size() - 2;i >= 0;i--){ if(val[ans[i]] % 2 == 0 && lst_2 == 0) lst_2 = i; if(val[ans[i]] % 2 == 1 && lst_3 == 0) lst_3 = i; } for(int i = 0, changes = 0;i < ans.size() - 1;i++){ if(val[ans[i]] % 2 == 0 && heap[2].size() && (i + changes < lst_2 ? ans[i] >= -heap[2].top(): 1)){ ans.insert(ans.begin() + i + 1, -heap[2].top()); heap[2].pop(); changes++; } else if(val[ans[i]] % 2 == 1 && heap[3].size() && (i + changes < lst_3 ? ans[i] >= -heap[3].top(): 1)){ ans.insert(ans.begin() + i + 1, -heap[3].top()); heap[3].pop(); changes++; } } for(int i = 0;i < ans.size();i++){ cout << ans[i] << " " ; } return 0; CANNOT: ; cout << -1; }

Compilation message (stderr)

slagalica.cpp: In function 'int main()':
slagalica.cpp:60:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0, changes = 0;i < ans.size() - 1;i++){
                             ~~^~~~~~~~~~~~~~~~
slagalica.cpp:72:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int i = 0;i < ans.size();i++){
                ~~^~~~~~~~~~~~
#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...
#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...