Pagini recente » Borderou de evaluare (job #3146070) | Cod sursa (job #1088665) | Cod sursa (job #3270826) | Cod sursa (job #1600277) | Cod sursa (job #440497)
Cod sursa(job #440497)
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#define MAXX 100001
using namespace std;
typedef struct date {
uint32_t a;
uint32_t b;
} date;
vector<date> in;
date out[MAXX];
bool comp(date one, date two)
{
return one.a>two.a;
}
int main () {
FILE *f,*g;
f=fopen("gutui.in","r");
g=fopen("gutui.out","w");
uint32_t n,h,u;
fscanf (f, "%d %d %d",&n,&h,&u);
uint32_t i,j,x,y,pozmin;
date aux;
uint32_t gmax=0;
for (i=0;i<n;i++)
{
fscanf (f, "%d %d",&x,&y);
aux.a=x;
aux.b=y;
in.push_back(aux);
}
sort(in.begin(),in.end(),comp);
uint32_t k = 0;
for (i = 0; i < n;i ++ )
if (in[i].a <= h) {
out[k].b = in[i].b;
gmax += in[i].b;
if(h<u)
h=0;
else
h -= u ;
k++;
}
else {
pozmin=0;
for (j=1;j<k;j++) {
if (out[j].b < out[pozmin].b )
pozmin=j;
}
if ( in[i].b > out[pozmin].b ) {
gmax = gmax + in[i].b - out[pozmin].b;
out[pozmin].b = in[i].b;
}
}
fprintf(g, "%d\n",gmax);
fclose(g);
return 0;
}