Mai intai trebuie sa te autentifici.
Cod sursa(job #1936147)
Utilizator | Data | 22 martie 2017 21:22:41 | |
---|---|---|---|
Problema | Rubarba | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1.8 kb |
#include <fstream>
using namespace std;
long n,m,q,i,j,k,x,nr,l[805],c[805],v[805][805],w[20][100005];
char ch;
void urca(long a)
{
long p=0;
while(p<=k)
{
w[p][a]++;
a=(a+1)/2;
p++;
}
}
void scade(long a)
{
long p=0;
while(p<=k)
{
w[p][a]--;
a=(a+1)/2;
p++;
}
}
long poz(long a)
{
long p=k,y=1;
while(p>0)
{
p--;
y=y*2-1;
if(a>w[p][y])
{
a-=w[p][y];
y++;
}
}
return y;
}
int main()
{
ifstream f("amedie.in");
ofstream g("amedie.out");
f>>n>>m>>q;
k=18;
for(i=1; i<=n; i++)
{
l[i]=1;
for(j=1; j<=m; j++)
{
f>>v[i][j];
urca(v[i][j]);
nr++;
}
}
for(i=1; i<=m; i++) c[i]=1;
for(i=1; i<=q; i++)
{
f>>ch;
if(ch=='L')
{
f>>x;
if(l[x])
{
l[x]=0;
for(j=1; j<=m; j++)
{
if(c[j])
{
scade(v[x][j]);
nr--;
}
}
}
}
else if(ch=='C')
{
f>>x;
if(c[x])
{
c[x]=0;
for(j=1; j<=n; j++)
{
if(l[j])
{
scade(v[j][x]);
nr--;
}
}
}
}
else
{
if(nr%2) g<<poz(nr/2+1)<<'\n';
else g<<poz(nr/2)<<'\n';
}
}
f.close(); g.close();
return 0;
}