Pagini recente » Cod sursa (job #3337085) | Cod sursa (job #346835) | Cod sursa (job #346833) | Cod sursa (job #634056) | Cod sursa (job #3325943)
/*
_____ _____ _______
/\ \ /\ \ /::\ \
/::\____\ /::\ \ /::::\ \
/:::/ / /::::\ \ /::::::\ \
/:::/ / /::::::\ \ /::::::::\ \
/:::/ / /:::/\:::\ \ /:::/~~\:::\ \
/:::/ / /:::/__\:::\ \ /:::/ \:::\ \
/:::/ / /::::\ \:::\ \ /:::/ / \:::\ \
/:::/ / _____ /::::::\ \:::\ \ /:::/____/ \:::\____\
/:::/____/ /\ \ /:::/\:::\ \:::\ \ ::: | |:::| |
|:::| / /::\____\ /:::/ \:::\ \:::\____\ |:::|____| |:::| |
|:::|____\ /:::/ / \::/ \:::\ /:::/ / \:::\ \ /:::/ /
\:::\ \ /:::/ / \/____/ \:::\/:::/ / \:::\ \ /:::/ /
\:::\ \ /:::/ / \::::::/ / \:::\ /:::/ /
\:::\ /:::/ / \::::/ / \:::\__/:::/ /
\:::\__/:::/ / /:::/ / \::::::::/ /
\::::::::/ / /:::/ / \::::::/ /
\::::::/ / /:::/ / \::::/ /
\::::/ / /:::/ / \::/____/
\::/____/ \::/ / ~~
~~ \/____/
*/
#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;
}