Pagini recente » Cod sursa (job #1638918) | Cod sursa (job #1031699) | Cod sursa (job #1067985) | Cod sursa (job #1430882) | Cod sursa (job #2047014)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("cutii.in");
ofstream fout("cutii.out");
int t, i, n,rez, k, j;
int aib[3502][3502];
pair<int, pair<int, int > > v[3502];
int quarry(int x, int y)
{
int i, j, r=0;
for(i=x;i>0;i-=i&(-i))
for(j=y;j>0;j-=j&(-j))
{
r=max(r, aib[i][j]);
}
return r;
}
void update(int x, int y, int val)
{
int i, j;
for(i=x;i<=n;i+=i&(-i))
for(j=y;j<=n;j+=j&(-j))
aib[i][j]=max(val, aib[i][j]);
}
int main()
{
fin>>n>>t;
for(;t>0;t--)
{
for(i=1;i<=n;i++)
fin>>v[i].first>>v[i].second.first>>v[i].second.second;
sort(v+1, v+n+1);
for(i=1;i<=n;i++)
{
rez=quarry(v[i].second.first, v[i].second.second)+1;
update(v[i].second.first, v[i].second.second, rez);
}
fout<<quarry(n, n)<<"\n";
for(k=1;k<=n;k++)
{
for(i=v[k].second.first;i<=n;i+=(i&-i))
for(j=v[k].second.first;j<=n;j+=(j&-j))
aib[i][j]=0;
}
}
fin.close();
fout.close();
return 0;
}