Cod sursa(job #2048363)

Utilizator luanastLuana Strimbeanu luanast Data 25 octombrie 2017 22:57:06
Problema Cutii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("cutii.in");
ofstream fout ("cutii.out");
int aib[3502][3502],T,t,sol,i,n,j,r,k;


struct cutie{
    int x,y,z;
}v[3510];


bool cmp(cutie a, cutie b){
    if(a.z==b.z)
        if(a.y==b.y)
            return a.x<b.x;
        else
            return a.y<b.y;
    return a.z<b.z;
}

int query (int i, int j){
    int r=0;
    for(int x=i;x;x-=x&-x)
        for(int y=j;y;y-=y&-y)
            r=max(r,aib[x][y]);
    return r;
}

int update (int i, int j, int xx){
    for(int x=i;x<=n;x+=x&-x)
        for(int y=j;y<=n;y+=y&-y)
            aib[x][y]=xx;

}

int main(){
    fin>>n>>T;
    for(t=1;t<=T;t++){
        r=0;
        for(i=1;i<=n;i++)
            fin>>v[i].x>>v[i].y>>v[i].z;
        sort(v+1,v+n+1,cmp);
        for(i=1;i<=n;i++){
            r=query(v[i].x-1,v[i].y-1)+1;
            update(v[i].x,v[i].y,r);
        }
        fout<<r<<"\n";
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                aib[i][j]=0;
    }

}