Pagini recente » Cod sursa (job #1978591) | Cod sursa (job #2150989) | Cod sursa (job #2941228) | Cod sursa (job #2864854) | Cod sursa (job #2508714)
#include <bits/stdc++.h>
#include <fstream>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
pair <int,int> v[3505];
int n,q,i,a,b,c;
int aib[3505][3505];
void update(int y, int z,int maxx){
for(int p1=y; p1<=n; p1+=(p1&-p1))
for(int p2=z; p2<=n; p2+=(p2&-p2))
aib[p1][p2]=max(aib[p1][p2],maxx);
}
int query(int y, int z){
int r=0;
for(int p1=y; p1; p1-=(p1&-p1))
for(int p2=z; p2; p2-=(p2&-p2))
r=max(r,aib[p1][p2]);
return r;
}
int main()
{
fin>>n>>q;
for(;q;q--){
for(i=1;i<=n;i++){
fin>>a>>b>>c;
v[a]={b,c};
}
int sol=-1;
for(int i=1;i<=n;i++){
int x=query(v[i].first,v[i].second);
sol=max(sol,x+1);
update(v[i].first,v[i].second,x+1);
}
fout<<sol<<"\n";
memset(aib,0,sizeof(aib));
}
}