Cod sursa(job #2215245)

Utilizator triscacezarTrisca Vicol Cezar triscacezar Data 21 iunie 2018 13:55:11
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

#define frs first.first
#define snd first.second
#define thr second

using namespace std;
ifstream f("cutii.in");
ofstream g("cutii.out");
pair<pair<int,int>, int> a[3510];
int n,t,i;
int aib[3510][3510];
int getmax(int i,int j)
{
    int ret=0;
    for(;i;i-=i&-i)
        for(;j;j-=j&-j)
            ret=max(ret,aib[i][j]);
    return ret;
}
void upd(int i,int j,int val)
{
    for(;i<=n;i+=i&-i)
        for(;j<=n;j+=j&-j)
            aib[i][j]=max(aib[i][j],val);
    return ;
}
int main()
{
    f>>n>>t;
    for(;t;t--)
    {
        int ans=0;
        for(i=1;i<=n;i++)
            f>>a[i].frs>>a[i].snd>>a[i].thr;
        sort(a+1,a+n+1);
        memset(aib,0,sizeof(aib));
        for(i=1;i<=n;i++)
        {
            int x=getmax(a[i].snd-1,a[i].thr-1);
            upd(a[i].snd,a[i].thr,x+1);
            ans=max(ans,x+1);
        }
        g<<ans<<'\n';
    }
    return 0;
}