Submission #1013120

#TimeUsernameProblemLanguageResultExecution timeMemory
1013120vjudge1Slagalica (COCI19_slagalica2)C++17
5 / 70
40 ms2764 KiB
#include <bits/stdc++.h> using namespace std; int main(){ int n; cin >> n; vector<int> vec[10], g[10]; int lin = 0, lout = 0, rin = 0, rout = 0; for (int i = 0; i < n; i ++){ int x, y; cin >> x >> y; vec[x].push_back(y); lin += (x == 3 or x == 4 or x == 8); lout += (x == 1 or x == 2 or x == 7); rin += (x == 2 or x == 4 or x == 6); rout += (x == 1 or x == 3 or x == 5); } for (int i = 1; i <= 8; i ++) sort(vec[i].rbegin(), vec[i].rend()); int f = 5; if (vec[6].size()) f = 6; int l = 7; if (vec[8].size()) l = 8; int c1 = vec[1].size(); int c2 = vec[2].size(); int c3 = vec[3].size(); int c4 = vec[4].size(); if (abs(c1 - c4) >= 2){ cout << -1 << endl; return 0; } if (c1 > c4 and l == 7){ cout << -1 << endl; return 0; } if (c1 < c4 and l == 8){ cout << -1 << endl; return 0; } if (c1 == c4 and ((f==6 and l==8) or (f==5 and l==7))){ cout << -1 << endl; return 0; } g[5] = {3, 4}; g[6] = {1, 2}; g[1] = {3, 4, 8}; g[2] = {1, 2, 7}; g[3] = {3, 4, 8}; g[4] = {1, 2, 7}; vector<int> answer, types; int lm = 1, rm; for (int x : vec[5]){ answer.push_back(x); types.push_back(5); rout--; lm = 1; } for (int x : vec[6]){ answer.push_back(x); types.push_back(6); rin--; lm = 0; } if (vec[7].size()) rm = 1; else rm = 0; while (1){ int last = types.back(); int min_t = -1; for (int t : g[last]){ if (vec[t].size() == 0) continue; if (t == 3 and vec[1].size() == 0){ min_t = 3; break; } if (t == 1 and vec[1].size() == 1 and vec[2].size() > 0) continue; if (vec[t].size() and (min_t == -1 or vec[min_t].back() > vec[t].back())) min_t = t; } bool all = 1; for (int i = 1; i <= 4; i ++) all &= (vec[i].size() == 0); if (all) break; if (!all and min_t == -1){ cout << -1 << endl; return 0; } types.push_back(min_t); answer.push_back(vec[min_t].back()); vec[min_t].pop_back(); } int last = types.back(); int have = 7; if (vec[8].size()) have = 8; if ((have == 7 and (last == 2 or last == 4)) or (have == 8 and (last == 1 or last == 3))) answer.push_back(vec[have][0]); else{ cout << -1 << endl; return 0; } for (int x : answer) cout << x << " "; cout << endl; }

Compilation message (stderr)

slagalica.cpp: In function 'int main()':
slagalica.cpp:29:9: warning: unused variable 'c2' [-Wunused-variable]
   29 |     int c2 = vec[2].size();
      |         ^~
slagalica.cpp:30:9: warning: unused variable 'c3' [-Wunused-variable]
   30 |     int c3 = vec[3].size();
      |         ^~
slagalica.cpp:60:9: warning: variable 'lm' set but not used [-Wunused-but-set-variable]
   60 |     int lm = 1, rm;
      |         ^~
slagalica.cpp:60:17: warning: variable 'rm' set but not used [-Wunused-but-set-variable]
   60 |     int lm = 1, rm;
      |                 ^~
#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...