Pagini recente » Cod sursa (job #325206) | Cod sursa (job #2635462) | Cod sursa (job #3173109) | Cod sursa (job #147498) | Cod sursa (job #721109)
Cod sursa(job #721109)
#include <stdio.h>
#include <list>
#include <vector>
#include <algorithm>
using namespace std;
const int dim = 100100;
int N, T, nm, R;
struct paza { int x, y, c; } A[dim];
struct inv {
int i;
vector <int> c;
} norm[dim];
list <int> L;
int cmp (inv a, inv b)
{
return a.i < b.i;
}
void cit ()
{
scanf ("%d%d", &N, &T);
for (int i = 1; i <= N; i++)
{
scanf ("%d%d%d", &A[i].x, &A[i].y, &A[i].c);
norm[++nm].i = A[i].x;
norm[nm].c.push_back (A[i].c);
norm[++nm].i = A[i].y + 1;
norm[nm].c.push_back (-A[i].c);
}
sort (norm + 1, norm + 1 + nm, cmp);
}
int bst ()
{
int mn = 1<<30;
for (list <int> :: iterator it = L.begin (); it != L.end (); it++)
{
mn = min (mn, *it);
}
return mn;
}
void ins (int c)
{
L.push_back (c);
}
void del (int c)
{
for (list <int> :: iterator it = L.begin (); it != L.end (); it++)
if (*it == c)
{
L.erase (it);
return;
}
}
void modif (int n)
{
for (int i = 0, x; i < norm[n].c.size(); i++)
{
x = norm[n].c[i];
if (x > 0)
ins (x);
else
del (-x);
}
}
void rez ()
{
modif (1);
for (int i = 2; i <= nm; i++)
{
R += bst () * (norm[i].i - norm[i-1].i);
modif (i);
}
printf ("%d", R);
}
int main ()
{
freopen ("gardieni.in", "r", stdin);
freopen ("gardieni.out", "w", stdout);
cit ();
rez ();
return 0;
}