Cod sursa(job #1617864)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 27 februarie 2016 16:52:21
Problema Gardieni Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <stdio.h>
#include <algorithm>
#define lim 50010
using namespace std;
struct elem{int st,dr,nr;};
elem v[lim];
bool cmp(elem a,elem b){
    if(a.st<b.st)
        return true;
    else
        if(a.st>b.st)
            return false;
        else
            if(a.nr<b.nr)
                return true;
            else
                return false;
}
int main(){
    FILE *fin,*fout;
    fin=fopen("gardieni.in","r");
    fout=fopen("gardieni.out","w");
    int i,j,k,n,t,min;
    long long cost=0;
    fscanf(fin,"%d%d",&n,&t);
    for(i=1;i<=n;i++)
        fscanf(fin,"%d%d%d",&v[i].st,&v[i].dr,&v[i].nr);
    sort(v+1,v+n+1,cmp);
    k=1;
    for(i=1;i<=t;i++){
        while(v[k].dr<i)
            k++;
        min=2000000;
        j=0;
        while(v[j+k].st<=i&&i<=v[j+k].dr){
            if(v[j+k].nr<min)
                min=v[j+k].nr;
            j++;
        }
        cost=cost+(long long)min;
    }
    fprintf(fout,"%lld",cost);
    fclose(fin);
    fclose(fout);
    return 0;
}