Pagini recente » Cod sursa (job #1282855) | Cod sursa (job #1149506) | Cod sursa (job #2151368) | Borderou de evaluare (job #171569) | Cod sursa (job #2046482)
# include <fstream>
# include <algorithm>
# define DIM 3510
# define x first.second
# define y second
# define z first.first
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
pair<pair<int,int>,int> v[DIM];
int d[DIM][DIM],n,t,q,i,sol;
int query(int i,int j){
int s=0;
for(int xx=i;xx>=1;xx-=(xx&(-xx)))
for(int yy=j;yy>=1;yy-=(yy&(-yy)))
s=max(d[xx][yy],s);
return s;
}
void update(int i,int j,int val){
for(int xx=i;xx<=n;xx+=(xx&(-xx)))
for(int yy=j;yy<=n;yy+=(yy&(-yy)))
d[xx][yy]=max(d[xx][yy],val);
}
int main () {
fin>>n>>t;
for(q=1;q<=t;q++){
for(i=1;i<=n;i++)
fin>>v[i].x>>v[i].y>>v[i].z;
sort(v+1,v+n+1);
sol=0;
for(i=1;i<=n;i++){
int val=query(v[i].x-1,v[i].y-1)+1;
sol=max(sol,val);
update(v[i].x,v[i].y,val);
}
for(i=1;i<=n;i++){
for(int xx=v[i].x;xx<=n;xx+=(xx&(-xx)))
for(int yy=v[i].y;yy<=n;yy+=(yy&(-yy)))
d[xx][yy]=0;
}
fout<<sol<<"\n";
}
return 0;
}