Pagini recente » Cod sursa (job #2686741) | Cod sursa (job #688521) | Cod sursa (job #1034516) | Cod sursa (job #3285500) | Cod sursa (job #2091936)
#include <fstream>
#include <cstdio>
#include <algorithm>
#include <vector>
#define VAL 50015
using namespace std;
struct interval
{
int be, en, cost;
};
interval P[VAL];
int N, T, i, j, mn, k;
long long ANS;
vector <interval> S[2];
bool cmp(interval A, interval B)
{
if (A.be==B.be)
return A.en<B.en;
return A.be<B.be;
}
char buff[VAL];
int poz=0;
int citire()
{
int nr=0;
while (buff[poz]<'0' || '9'<buff[poz])
if (++poz==VAL)
fread(buff, 1, VAL, stdin), poz=0;
while ('0'<=buff[poz] && buff[poz]<='9')
{
nr=nr*10+buff[poz]-'0';
if (++poz==VAL)
fread(buff, 1, VAL, stdin), poz=0;
}
return nr;
}
int main()
{
freopen("gardieni.in", "r", stdin);
freopen("gardieni.out", "w", stdout);
N=citire();
T=citire();
for (i=1; i<=N; i++)
{
P[i].be=citire();
P[i].en=citire();
P[i].cost=citire();
}
sort(P+1, P+N+1, cmp);
for (i=1; i<=T; i++)
{
S[i % 2].clear();
mn=(1 << 25);
for (j=0; j<S[1-(i % 2)].size(); j++)
{
if (S[1-(i % 2)][j].be<=i && i<=S[1-(i % 2)][j].en)
{
S[i % 2].push_back(S[1-(i % 2)][j]);
mn=min(mn, S[1-(i % 2)][j].cost);
}
}
while (P[k+1].be<=i && i<=P[k+1].en)
{
mn=min(mn, P[k+1].cost);
k++;
S[i % 2].push_back(P[k]);
}
ANS+=mn;
}
printf("%lld\n", ANS);
return 0;
}