Pagini recente » Borderou de evaluare (job #1566420) | Cod sursa (job #2778811)
#include<bits/stdc++.h>
using namespace std;
ifstream F("cutii.in");
ofstream G("cutii.out");
int n,t,a[3503][3503],m,w,i,j,k;
pair<int,pair<int,int> > p[3503];
int main()
{
F>>n>>t;
while(t--) {
for(m=0,i=1;i<=n;++i)
F>>p[i].first>>p[i].second.first>>p[i].second.second;
sort(p+1,p+n+1);
for(i=1;i<=n;++i) {
for(w=0,j=p[i].second.first-1;j;j-=j&-j)
for(k=p[i].second.second-1;k;k-=k&-k)
w=max(w,a[j][k]);
for(++w,j=p[i].second.first;j<=n;j+=j&-j)
for(k=p[i].second.second;k<=n;k+=k&-k)
a[j][k]=max(a[j][k],w);
m=max(m,w);
}
G<<m<<"\n";
for(i=1;i<=n;++i)
for(k=p[i].second.first;k<=n;k+=k&-k)
for(j=p[i].second.second;j<=n;j+=j&-j)
a[k][j]=0;
}
}