Submission #17875

#TimeUsernameProblemLanguageResultExecution timeMemory
17875ElibayWeighting stones (IZhO11_stones)C++14
8 / 100
1000 ms11096 KiB
#include <bits/stdc++.h> #define Fname "" using namespace std; const int MaxN = 3e5 + 17, INF = 1e9 + 17, Mod = 1e9 + 7; multiset < int > S, s; int n, x, y; double Sx, Sy, Mx, My, kol1, kol2; int MxMin, MyMin, MxMax, MyMax; inline void Solve1 () { int k1 = 0, k2 = 0; auto i = s.rbegin (); auto j = S.rbegin (); for (int q = 1; q <= n; ++ q) { int X = *i; int Y = *j; if (Y > X) k1 ++; if (X > Y) k2 ++; if (k1 && k2) { puts ("?"); return; } if (X == 0 && Y == 0) { if (k2 == 0) puts ("<"); else if (k1 == 0) puts (">"); return; } ++ i; ++ j; } } int main () { #ifdef Elibay freopen (".in", "r", stdin); #endif cin >> n; for (int i = 1; i <= n; ++ i) S.insert (0), s.insert (0); for (int z = 1; z <= n; ++ z) { cin >> x >> y; if (MxMin == 0) MxMin = INF; if (MyMin == 0) MyMin = INF; if (y == 2) { Mx += x * 1.0 + 0.999, Sx += x * 1.0, kol2 ++; auto w = S.begin (); S.erase (w); S.insert (x); MxMin = min (x, MxMin); MxMax = max (x, MxMax); } else if (y == 1) { My += x * 1.0 + 0.999, Sy += x * 1.0, kol1 ++; auto w = s.begin (); s.erase (s.begin ()); s.insert (x); MyMin = min (x, MyMin); MyMax = max (x, MyMax); } if (MxMin == INF) MxMin = 0; if (MyMin == INF) MyMin = 0; if ((Sx > My && kol2 >= kol1 && MxMin > MyMin && MxMax > MyMax) || (Sy > Mx && kol1 >= kol2 && MyMax > MxMax && MyMin > MxMin)) Solve1 (); else puts ("?"); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...