This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
int cnt[9] = {};
vector<int> v[9], G[9];
bool check()
{
bool ans = true;
ans &= (cnt[1] <= cnt[4] + cnt[3] + cnt[8]);
ans &= (cnt[4] <= cnt[1] + cnt[2] + cnt[7]);
if(cnt[2])
ans &= (cnt[1] + cnt[7] >= 1);
if(cnt[3])
ans &= (cnt[4] + cnt[8] >= 1);
ans &= (cnt[7] + cnt[8] == 1);
ans &= *min_element(cnt, cnt + 9) >= 0;
return ans;
}
int main()
{
int n;
cin >> n;
G[1] = {3, 4, 8};
G[2] = {1, 2, 7};
G[3] = {8, 3, 4};
G[4] = {1, 2, 7};
G[5] = {3, 4, 8};
G[6] = {1, 2, 7};
for(int i = 0; i < n; i ++)
{
int x, a;
cin >> x >> a;
v[x].push_back(a);
cnt[x]++;
}
for(int i = 1; i <= 8; i ++)
sort(v[i].rbegin(), v[i].rend());
if(v[5].size() + v[6].size() != 1)
{
cout << -1 << endl;
return 0;
}
if(!check())
{
cout << -1 << endl;
return 0;
}
int cur;
vector<int> ans;
if(v[5].size() == 1)
cur = 5, ans.push_back(v[5][0]);
else
cur = 6, ans.push_back(v[6][0]);
cnt[5] = cnt[6] = 0;
// cerr << "done\n";
for(int i = 1; i + 1 < n; i ++)
{
int nxt = -1;
for(int k : G[cur])
{
// cerr << "k = " << k << endl;
cnt[k]--;
if(check())
nxt = (nxt == -1 || v[nxt].back() > v[k].back()) ? k : nxt;
cnt[k]++;
}
// cerr << nxt << endl;
if(nxt == -1)
{
cout << nxt << endl;
return 0;
}
cnt[nxt]--;
ans.push_back(v[nxt].back());
v[nxt].pop_back();
cur = nxt;
}
for(int i : G[cur])
if(i == 7 || i == 8)
ans.push_back(v[i][0]);
if(ans.size() != n)
cout << -1;
else
for(int i : ans)
cout << i << ' ';
cout << endl;
return 0;
}
Compilation message (stderr)
slagalica.cpp: In function 'int main()':
slagalica.cpp:97:17: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
97 | if(ans.size() != n)
| ~~~~~~~~~~~^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |