Pagini recente » Cod sursa (job #237952) | Cod sursa (job #2418314) | Cod sursa (job #758174) | Cod sursa (job #2617295) | Cod sursa (job #2323564)
#include <iostream>
#include <fstream>
#include <algorithm>
#define Dm 3501
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
struct cutie
{
int x,y,z;
};
int cmp(cutie a,cutie b)
{
return a.x>b.x;
}
int aib[Dm][Dm];
int n,t;
cutie A[Dm];
void update(int v,int pozi,int pozj)
{
while(pozi<=n)
{
while(pozj<=n)
{
aib[pozi][pozj]+=v;
pozj=pozj+(pozj&(-pozj));
}
pozi=pozi+(pozi&(-pozi));
}
}
int f(int pozi,int pozj)
{
int rez=0;
while(pozi>0)
{
while(pozj>0)
{
rez+=aib[pozi][pozj];
pozj=pozj-(pozj&(-pozj));
}
pozi=pozi-(pozi&(-pozi));
}
return rez;
}
int main()
{
fin>>n>>t;
for(int nt=1; nt<=t; nt++)
{
for(int i=1; i<=n; i++)
fin>>A[i].x>>A[i].y>>A[i].z;
sort(A+1,A+n+1,cmp);
for(int i=1;i<=n;i++)
{
for(int j=i;j>0;j--)
{
if(A[i].x>A[j].x)
if(A[i].y>A[j].y)
if(A[i].z>A[j].z)
update(1,A[i].y,A[i].z);
}
}
int maxi=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(maxi<f(i,j))
maxi=f(i,j);
}
}
fout<<maxi<<"\n";
}
return 0;
}