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;
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin >> n;
bool type1 = 0, type2 = 0;
int end;
int cnt1 = 0, cnt4 = 0;
vector <int> types;
vector <pair<int, int> > mass1, mass2;
for(int i = 0; i < n; i++)
{
int x, a;
cin >> x >> a;
if(x == 5 || x == 6)
{
types.push_back(a);
}
else if(x == 7 || x == 8)
{
end = a;
}
if(x == 5)
{
type1 = 1;
}
if(x == 7)
{
type2 = 1;
}
if(x == 1)
{
cnt1++;
}
if(x == 4)
{
cnt4++;
}
if(x == 1 || x == 2)
{
mass1.push_back({a, x});
}
else if(x == 3 || x == 4)
{
mass2.push_back({a, x});
}
}
if(type1 && type2 && cnt1 + 1 != cnt4)
{
cout << -1;
return 0;
}
if(!type1 && !type2 && cnt4 + 1 != cnt1)
{
cout << -1;
return 0;
}
if(type1 ^ type2)
{
if(cnt1 != cnt4)
{
cout << -1;
return 0;
}
if(cnt1 == 0)
{
if(type1 && (int)mass1.size() || type2 && (int)mass2.size())
{
cout << -1;
return 0;
}
}
}
sort(mass1.begin(), mass1.end());
sort(mass2.begin(), mass2.end());
int it1 = 0, it2 = 0;
bool flag = !type1;
int it3 = 0;
while(!((it1 == mass1.size() && flag) || (it2 == mass2.size() && !flag)))
{
if(flag)
{
if(mass1[it1].second == 1)
{
flag = 0;
it3 = types.size() - 1;
}
types.push_back(mass1[it1].first);
it1++;
}
else
{
if(mass2[it2].second == 4)
{
flag = 1;
it3 = types.size() - 1;
}
types.push_back(mass2[it2].first);
it2++;
}
}
for(int i = 0; i < it3 + 1; i++)
{
cout << types[i] << " ";
}
while(it1 != mass1.size())
{
cout << mass1[it1].first << " ";
it1++;
}
while(it2 != mass2.size())
{
cout << mass2[it2].first << " ";
it2++;
}
for(int i = it3 + 1; i < types.size(); i++)
{
cout << types[i] << " ";
}
cout << end;
return 0;
}
Compilation message (stderr)
slagalica.cpp: In function 'int main()':
slagalica.cpp:72:13: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
if(type1 && (int)mass1.size() || type2 && (int)mass2.size())
~~~~~~^~~~~~~~~~~~~~~~~~~~
slagalica.cpp:84:15: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(!((it1 == mass1.size() && flag) || (it2 == mass2.size() && !flag)))
~~~~^~~~~~~~~~~~~~~
slagalica.cpp:84:48: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(!((it1 == mass1.size() && flag) || (it2 == mass2.size() && !flag)))
~~~~^~~~~~~~~~~~~~~
slagalica.cpp:111:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(it1 != mass1.size())
~~~~^~~~~~~~~~~~~~~
slagalica.cpp:116:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while(it2 != mass2.size())
~~~~^~~~~~~~~~~~~~~
slagalica.cpp:121:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i = it3 + 1; i < types.size(); i++)
~~^~~~~~~~~~~~~~
slagalica.cpp:125:7: warning: 'end' may be used uninitialized in this function [-Wmaybe-uninitialized]
cout << end;
~~~~~^~~~~~
# | 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... |