Pagini recente » Cod sursa (job #585681) | Cod sursa (job #585202) | Cod sursa (job #2546292) | Cod sursa (job #2902410) | Cod sursa (job #2508710)
#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(; y<=n; y+=(y&-y))
for(int z=Z; z<=n; z+=(z&-z))
aib[y][z]=max(aib[y][z],maxx);
}
int query(int y, int Z){
int r=0;
for(; y; y-=(y&-y))
for(int z=Z; z; z-=(z&-z))
r=max(r,aib[y][z]);
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[a].first,v[a].second);
sol=max(sol,x+1);
update(v[a].first,v[a].second,x+1);
}
fout<<sol<<"\n";
memset(aib,0,sizeof(aib));
}
}