Cod sursa(job #1586786)

Utilizator rares98_priPopa Rares rares98_pri Data 1 februarie 2016 17:32:49
Problema Cutii Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("cutii.in");
ofstream out ("cutii.out");
int n,t,a[3500][3500],s,sol;
struct dimensiuni{
    int x,y,z;};
dimensiuni b[3500];

bool cmp(dimensiuni a, dimensiuni b){
    return a.z<b.z;}

void update(int x, int y){
    for(int i=x;i<=n;i++){
        for(int j=y;j<=n;j++){
            a[i][j] = max(a[i][j],s+1);}}}

void query(int x, int y){
    for(int i=x;i>=1;i--){
        for(int j=y;j>=1;j--){
            s=max(a[i][j],s);}}}

void clean(){
    for(int i=1;i<=n;i++)
        for(int i1=b[i].x;i1<=n;i1++)
            for(int j=b[i].y;j<=n;j++)
                a[i1][j]=0;}

int main(){
in>>n>>t;
while(t--){
for(int i=1;i<=n;i++)
    in>>b[i].x>>b[i].y>>b[i].z;
sort(b+1,b+n+1,cmp);
    for(int i=1;i<=n;i++){
        s=0;
        query(b[i].x-1, b[i].y-1);
        if(s+1>sol)
            sol=s+1;
        update(b[i].x,b[i].y);}
        out<<sol<<"\n";
        clean();
        sol=0;}}