Pagini recente » Cod sursa (job #1962494) | Cod sursa (job #2088477) | Cod sursa (job #2964179) | Cod sursa (job #3182116) | Cod sursa (job #1586786)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("cutii.in");
ofstream out ("cutii.out");
int n,t,a[3500][3500],s,sol;
struct dimensiuni{
int x,y,z;};
dimensiuni b[3500];
bool cmp(dimensiuni a, dimensiuni b){
return a.z<b.z;}
void update(int x, int y){
for(int i=x;i<=n;i++){
for(int j=y;j<=n;j++){
a[i][j] = max(a[i][j],s+1);}}}
void query(int x, int y){
for(int i=x;i>=1;i--){
for(int j=y;j>=1;j--){
s=max(a[i][j],s);}}}
void clean(){
for(int i=1;i<=n;i++)
for(int i1=b[i].x;i1<=n;i1++)
for(int j=b[i].y;j<=n;j++)
a[i1][j]=0;}
int main(){
in>>n>>t;
while(t--){
for(int i=1;i<=n;i++)
in>>b[i].x>>b[i].y>>b[i].z;
sort(b+1,b+n+1,cmp);
for(int i=1;i<=n;i++){
s=0;
query(b[i].x-1, b[i].y-1);
if(s+1>sol)
sol=s+1;
update(b[i].x,b[i].y);}
out<<sol<<"\n";
clean();
sol=0;}}