Pagini recente » Cod sursa (job #433798) | Cod sursa (job #1239793) | Cod sursa (job #2196022) | Cod sursa (job #1469793) | Cod sursa (job #433202)
Cod sursa(job #433202)
#include <stdio.h>
#include <string.h>
void swap (long a, long b)
{
long aux;
aux=a;
a=b;
b=aux;
}
int main()
{
// nr gutui, inaltimea maxima, inaltarea, rezultatul final
long n, hi, u, smax=0;
// inantimea fiecarei gutui si greutatea
long h[100001], w[100001], i, j, aux, max, imax;
long hmin, nrs, k, s[100001], cules[100001], hmax;
FILE *f=fopen("gutui1.in", "r");
FILE *g=fopen("gutui.out", "w");
fscanf(f, "%ld %ld %ld", &n, &hi, &u);
for(i=0; i<n; i++)
fscanf(f, "%ld %ld", &h[i], &w[i]);
/* for(i=0; i<n; i++)
printf("fructul %ld are inaltimea %ld si greutatea %ld\n", i, h[i], w[i]);
*/
//sortam descrescator fructele, in functie de inaltime
//trebuie inlocuit cu quicksort, de exemplu
for(i=0; i<n-1; i++)
for(j=i+1; j<n; j++)
if(h[i]<h[j])
{
//swap(h[i], h[j]);
//swap(w[i], w[j]);
aux=h[i];
h[i]=h[j];
h[j]=aux;
aux=w[i];
w[i]=w[j];
w[j]=aux;
}
printf("Dupa quicksort: \n");
for(i=0; i<n; i++)
printf("fructul %ld are inaltimea %ld si greutatea %ld\n", i, h[i], w[i]);
hmax=h[0];
printf("hmax este: %ld\n", hmax);
//pana aici sigur e bine
i=0;
imax=i;
max=w[i];
while(i<n &&h[i]+u>=hi)
{
imax=(w[i]>max)?i:imax;
max=w[imax];
i++;
}
if(i==n)
{
smax+=max;
w[imax]=-1;
for(j=0; j<n; j++)
{
h[j]+=u;
if(h[j]>u)
w[j]=-1;
}
}
else
while(i<n && h[i]+2*u>=hi)
{
fprintf(g, "%ld", smax);
fclose(f);
fclose(g);
return 0;
}