Pagini recente » Cod sursa (job #1381334) | Cod sursa (job #3150089) | Cod sursa (job #557867) | Cod sursa (job #2703057) | Cod sursa (job #346430)
Cod sursa(job #346430)
#include <stdio.h>
//#include <conio.h>
using namespace std;
long elem=0, heap[100000];
void addheap(long lana);
int main() {
long n, x, l, lung[100000], lana[100000], suma=0, i, j, pas, t;
FILE *in = fopen("lupu.in", "r"), *out = fopen("lupu.out", "w");
fscanf(in, "%d%d%d", &n, &x, &l);
for(i=1; i<=n; i++) {
fscanf(in, "%d%d", &lung[i], &lana[i]);
}
pas=n; t=1;
while(pas>0) {
for(i=1; i<=n; i++) {
if(lung[i]!=-1) {
if(lung[i]+t*l>x) {
pas--; addheap(lana[i]);
printf("%d ", lana[i]);
lung[i]=-1;
}
}
} t++;
//printf("%s", "--->"); printf("%d ", heap[1]);
if(heap[1]) {suma+=heap[1]; } elem=0;
//printf("\n\n");
}
fprintf(out, "%d", suma);
fclose(in); fclose(out);
//getch();
return 0;
}
void addheap(long lana) {
int s, k;
elem++;
heap[elem]=lana;
s=elem;
if(s==1) { return; }
while(s>1 && heap[s]>heap[(long)s>>1]) {
k=heap[s];
heap[s]=heap[(long)s>>1];
heap[(long)s>>1]=k;
s=(long)s>>1;
}
}