Pagini recente » Cod sursa (job #3168042) | Cod sursa (job #2805165) | Cod sursa (job #896477) | Cod sursa (job #717204) | Cod sursa (job #196213)
Cod sursa(job #196213)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define ff first
#define ss second
#define NMAX 50010
int N, T;
int nev;
pair <int, pair<int, int> > ev[NMAX * 2];
int n;
int cst[20];
int jeg[20];
void baga(int val, int poz)
{
n++;
cst[n] = val;
jeg[n] = poz;
}
void scoate(int poz)
{
int i;
for (i = 1; i <= n && jeg[i] != poz; i++);
swap(cst[i], cst[n]);
swap(jeg[i], jeg[n]);
n--;
}
int get_min()
{
int i, mn = 1 << 21;
for (i = 1; i <= n; i++) mn = min(mn, cst[i]);
return mn;
}
int main()
{
int i, x, y, c;
freopen("gardieni.in", "r", stdin);
freopen("gardieni.out", "w", stdout);
scanf("%d %d", &N, &T);
for (i = 1; i <= N; i++) {
scanf("%d %d %d", &x, &y, &c);
nev++;
ev[nev].ff = x;
ev[nev].ss.ff = i;
ev[nev].ss.ss = c;
nev++;
ev[nev].ff = y;
ev[nev].ss.ff = -i;
ev[nev].ss.ss = c;
}
sort(ev + 1, ev + nev + 1);
int j = 1, jj;
long long rez = 0;
for (i = 1; i <= T; i++) {
for (jj = j; jj <= nev && ev[jj].ff == i; jj++)
if (ev[jj].ss.ff > 0) baga(ev[jj].ss.ss, ev[jj].ss.ff);
rez += get_min();
for (jj = j; jj <= nev && ev[jj].ff == i; jj++)
if (ev[jj].ss.ff < 0) scoate(-ev[jj].ss.ff);
j = jj;
}
printf("%lld\n", rez);
return 0;
}