Pagini recente » Cod sursa (job #869736) | Cod sursa (job #1465990) | Cod sursa (job #1083133) | Cod sursa (job #2707638) | Cod sursa (job #2047725)
#include <fstream>
#include <algorithm>
#define DIM 3502
using namespace std;
ifstream fin ("cutii.in");
ofstream fout ("cutii.out");
int t,n,i,j,k,nr,x,y,z;
pair< pair <int,int> ,int> v[DIM];
int aib[DIM][DIM];
int query (int x,int y){
int maxim = 0;
for (int i=x;i>=1;i-=(i&-i))
for (int j=y;j>=1;j-=(j&-j))
maxim = max (maxim,aib[i][j]);
return maxim;
}
int update (int x,int y){
for (int i=x;i<=n;i+=(i&-i))
for (int j=y;j<=n;j+=(j&-j))
aib[i][j] = max (aib[i][j],nr);
}
int main (){
fin>>n>>t;
for (;t--;){
for (i=1;i<=n;i++)
fin>>v[i].first.first>>v[i].first.second>>v[i].second;
sort (v+1,v+n+1);
for (i=1;i<=n;i++){
y = v[i].first.second;
z = v[i].second;
nr = query (y-1,z-1)+1;
update (y,z);
}
fout<<query (n,n)<<"\n";
for (k=1;k<=n;k++)
for (i=v[k].first.second;i<=n;i+=(i&-i))
for (j=v[k].second;j<=n;j+=(j&-j))
aib[i][j] = 0;
}
return 0;
}