Cod sursa(job #565692)

Utilizator t2011tVasilescu Popescu t2011t Data 28 martie 2011 10:16:07
Problema Lupul Urias si Rau Scor 4
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;

struct oaie
{
int d;
int lana;
};

int i1,k1,k2,n,x,l,aux;
oaie v[100000];

bool comp1(oaie a,oaie b);
bool comp2(oaie a,oaie b);

int main()
{
FILE *in,*out;
in=fopen("lupu.in","rt");
out=fopen("lupu.out","wt");

fscanf(in,"%d%d%d",&n,&x,&l);

for(i1=0;i1<n;i1++)
	{
	fscanf(in,"%d%d",&k1,&k2);
	if(k1<=x)
		{
		v[aux].d=k1;
		v[aux].lana=k2;
		aux++;
		}
	}
n=aux;

sort(v,v+n,comp1);
sort(v,v+n,comp2);

//for(i1=0;i1<n;i1++)
//	printf("%d %d\n",v[i1].d,v[i1].lana);

int add=0,total=0;

for(i1=0;i1<n;i1++)
	{
	if(v[i1].d+add<=x)
		{
		total+=v[i1].lana;
		add+=l;
		}
	}

fprintf(out,"%d",total);

fclose(in);
fclose(out);
return 0;
}

bool comp1(oaie a,oaie b)
{
if(a.d>b.d)
	return true;
else
	if(a.d==b.d)
		if(a.lana>b.lana)
			return true;
	
return false;
}

bool comp2(oaie a,oaie b)
{
if(x-a.d+x-b.d<=l)
	if(a.lana>b.lana)
		return true;

return false;
}