Pagini recente » Cod sursa (job #1061308) | Cod sursa (job #456195) | Cod sursa (job #927198) | Cod sursa (job #1965977) | Cod sursa (job #2843725)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("cutii.in");
ofstream cout("cutii.out");
struct Cutie
{
int x;
int y;
int z;
int nrCutiiCarePotIntra;
bool operator< (const Cutie& other) const
{
return (
this->x < other.x &&
this->y < other.y &&
this->z < other.z) ||
(
(this->x+this->y+this->z)/3 < (other.x + other.y + other.z) / 3);
}
};
int n, t, i;
vector<vector<Cutie>> cutii;
int dp(int currentIndex)
{
/// base case
if (currentIndex == 0)
return 0;
/// rec case
if (cutii[i][currentIndex-1] < cutii[i][currentIndex])
cutii[i][currentIndex].nrCutiiCarePotIntra = dp(currentIndex - 1)+1;
else
cutii[i][currentIndex].nrCutiiCarePotIntra = 0;
return cutii[i][currentIndex].nrCutiiCarePotIntra;
}
int main()
{
cin >> n >> t;
cutii = vector<vector<Cutie>>(t,vector<Cutie>(n));
for (i = 0; i < t; i++)
{
for (int j = 0; j < n; j++)
{
cin >> cutii[i][j].x >> cutii[i][j].y >> cutii[i][j].z;
}
sort(cutii[i].begin(), cutii[i].end());
cout << dp(n-1)+1 << '\n';
}
return 0;
}