Submission #17828

#TimeUsernameProblemLanguageResultExecution timeMemory
17828ElibayWeighting stones (IZhO11_stones)C++14
48 / 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;
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 (y == 2)
        {
            Mx += x * 1.0 + 0.999, Sx += x * 1.0, kol2 ++;
            auto w = S.begin ();
            S.erase (w);
            S.insert (x);
        }
        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);
        }
        if (z <= 3e4 + 3e3 && n <= 7e4)
        {
            if ((Sx > My && kol2 >= kol1) || (Sy > Mx && kol1 >= kol2))
                Solve1 ();
            else
                puts ("?");
        }
        else
        {
            if ((Sx > My && kol2 >= kol1))
                puts ("<");
            else if ((Sy > Mx && kol1 >= kol2))
                puts (">");
            else
                puts ("?");   
        }
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...