Cod sursa(job #3325943)

Utilizator octavurlurleteanu alexandru octavian octavurl Data 26 noiembrie 2025 22:53:43
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 3.96 kb
/*
          _____                            _____                           _______
         /\    \                          /\    \                         /::\    \
        /::\____\                        /::\    \                       /::::\    \
       /:::/    /                       /::::\    \                     /::::::\    \
      /:::/    /                       /::::::\    \                   /::::::::\    \
     /:::/    /                       /:::/\:::\    \                 /:::/~~\:::\    \
    /:::/    /                       /:::/__\:::\    \               /:::/    \:::\    \
   /:::/    /                       /::::\   \:::\    \             /:::/    / \:::\    \
  /:::/    /      _____            /::::::\   \:::\    \           /:::/____/   \:::\____\
 /:::/____/      /\    \          /:::/\:::\   \:::\    \         :::    |     |:::|    |
|:::|    /      /::\____\        /:::/  \:::\   \:::\____\        |:::|____|     |:::|    |
|:::|____\     /:::/    /        \::/    \:::\  /:::/    /         \:::\    \   /:::/    /
 \:::\    \   /:::/    /          \/____/ \:::\/:::/    /           \:::\    \ /:::/    /
  \:::\    \ /:::/    /                    \::::::/    /             \:::\    /:::/    /
   \:::\    /:::/    /                      \::::/    /               \:::\__/:::/    /
    \:::\__/:::/    /                       /:::/    /                 \::::::::/    /
     \::::::::/    /                       /:::/    /                   \::::::/    /
      \::::::/    /                       /:::/    /                     \::::/    /
       \::::/    /                       /:::/    /                       \::/____/
        \::/____/                        \::/    /                         ~~
         ~~                               \/____/

*/
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define ins(x) insert(x)
#define mp(x,y) make_pair(x,y)
#define pb(x) push_back(x)
#define fast_ios ios_base::sync_with_stdio(0),fin.tie(nullptr),fout.tie(nullptr);
#define all(v) (v).begin() , (v).end()

using namespace std;

ifstream fin ( "amedie.in" ) ;
ofstream fout ( "amedie.out" ) ;

int nxt()
{
int x;
fin >> x ;
return x;
}
void close_files()
{
fin.close();
fout.close();
}
const int nmax = 805;
int v[nmax][nmax];
bool lin[nmax];
bool col[nmax];
class fewick_tree
{
private:
    int n;
    vector<int>aib;
public:
    fewick_tree(int x)
    {
        n = x;
        aib.resize(n+2);
    }
    void update(int poz , int val )
    {
        for ( int i = poz ; i <= n ; i += ( -i & i ) )
            aib[i] += val;
    }
    int query ( int poz )
    {
        int suma = 0;
        for ( int i = poz ; i >= 1 ; i -= (-i & i ) )
            suma += aib[i];
        return suma ;
    }
    int cautare_binara()
    {
        int left = 1 , right = n , answer = -1;
        int que = query(n) , check = que/2+que%2;
        while ( left <= right )
        {
        int mij = ( left + right ) / 2 ;
        if ( query(mij) >= check )
        {
            answer = mij;
            right = mij - 1 ;
        }
        else
            left = mij + 1 ;
        }
        return answer;
    }
};
signed main()
{
    fast_ios
    int n , m , q ;
    fin >> n >> m >> q ;
    fewick_tree bit(100001);
    for ( int i = 1 ; i <= n ; ++ i )
        for ( int j = 1 ; j <= m ; ++ j )
    {
        fin >> v[i][j];
        bit.update(v[i][j],1);
    }
    for ( int i = 1 ; i <= q ; ++ i )
    {
    char c;
    fin >> c ;
    if ( c == 'Q' )
        fout << bit.cautare_binara() << '\n';
    else if ( c == 'L' )
    {
        int x;
        fin >> x;
        lin[x]=1;
        for ( int j = 1 ; j <= m ; ++ j )
            bit.update(v[x][j],-1);
    }
    else
    {
        int x;
        fin >> x;
        col[x]=1;
        for ( int j = 1 ; j <= n ; ++ j )
            bit.update(v[j][x],-1);
    }
    }
    close_files();
    return 0;
}