Pagini recente » Cod sursa (job #1477405) | Cod sursa (job #3041261) | Cod sursa (job #1406621) | Cod sursa (job #977503) | Cod sursa (job #2621818)
#include <bits/stdc++.h>
#define zeros(x) ((x ^ (x - 1)) & x)
using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
int n, t, x, y, z;
int aib[3505][3505];
struct cutie
{
int x, y, z;
};
bool cmp(cutie c1, cutie c2)
{
return c1.z > c2.z;
}
vector<cutie> cutii;
void add(int x, int y)
{
for(int i = x;i <= n;i += zeros(i))
for(int j = y;j <= n;j += zeros(j))
aib[i][j]++;
}
int sum(int x, int y)
{
int sum = 0;
for(int i = x;i > 0;i -= zeros(i))
for(int j = y;j > 0;j -= zeros(j))
sum += aib[i][j];
return sum;
}
int query(int x, int y)
{
return sum(n, n) - sum(x - 1, n) - sum(n, y - 1) + sum(x - 1, y - 1);
}
void Solve()
{
cutii.clear();
for(int i = 1;i <= n;++i)
{
f>>x>>y>>z;
cutii.push_back({x, y, z});
}
memset(aib, 0, sizeof(aib));
sort(cutii.begin(), cutii.end(), cmp);
int rez = 0;
for(auto it : cutii)
{
add(it.x, it.y);
rez = max(rez, query(it.x, it.y));
}
g<<rez<<'\n';
}
void Read()
{
f>>n>>t;
for(int i = 1;i <= t;++i)
Solve();
}
int main()
{
Read();
return 0;
}