Cod sursa(job #2047725)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 25 octombrie 2017 10:30:37
Problema Cutii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <algorithm>
#define DIM 3502
using namespace std;

ifstream fin ("cutii.in");
ofstream fout ("cutii.out");
int t,n,i,j,k,nr,x,y,z;
pair< pair <int,int> ,int> v[DIM];
int aib[DIM][DIM];
int query (int x,int y){
    int maxim = 0;
    for (int i=x;i>=1;i-=(i&-i))
        for (int j=y;j>=1;j-=(j&-j))
            maxim = max (maxim,aib[i][j]);
    return maxim;
}
int update (int x,int y){
    for (int i=x;i<=n;i+=(i&-i))
        for (int j=y;j<=n;j+=(j&-j))
            aib[i][j] = max (aib[i][j],nr);
}
int main (){

    fin>>n>>t;
    for (;t--;){
        for (i=1;i<=n;i++)
            fin>>v[i].first.first>>v[i].first.second>>v[i].second;
        sort (v+1,v+n+1);
        for (i=1;i<=n;i++){
            y = v[i].first.second;
            z = v[i].second;
            nr = query (y-1,z-1)+1;
            update (y,z);
        }

        fout<<query (n,n)<<"\n";

        for (k=1;k<=n;k++)
            for (i=v[k].first.second;i<=n;i+=(i&-i))
                for (j=v[k].second;j<=n;j+=(j&-j))
                    aib[i][j] = 0;

    }


    return 0;
}