Pagini recente » Cod sursa (job #2587370) | Cod sursa (job #1549737) | Cod sursa (job #1614468) | Cod sursa (job #1428456) | Cod sursa (job #676313)
Cod sursa(job #676313)
#include<stdio.h>
FILE *f , *g ;
int n , w , j ;
struct{long p ,c;}v[1001],aux;
long rez = 1000000000;
void citire();
void sort();
void solve();
void tipar();
int main()
{
citire();
sort();
solve();
tipar();
return 0;
}
void citire()
{
f=fopen("energii.in" , "r" );
fscanf(f , "%d%d" , &n , &w );
for(int i = 1 ; i<= n ; ++i )
fscanf(f , "%d%d" , &v[i].p , &v[i].c);
fclose(f);
}
void sort()
{
int h = n;
bool sw;
while(h > 1)
{
h/=2;
do
{
sw = 0;
for(int i = 1 ; i<= n-h ; ++i )
if(v[i].p > v[i+h].p)
{
aux = v[i];
v[i] = v[i+h];
v[i+h] = aux;
sw = 1;
}
}while(sw);
}
}
void solve()
{
for(int i = 1 ; i<= n ; ++i )
{
v[i].p+=v[i-1].p;v[i].c+=v[i-1].c;
if(v[i].p < w)
continue;
j = i-1;
while(v[i].p-v[j].p < w)
j--;
if(v[i].c-v[j].c < rez)
rez = v[i].c-v[j].c;
}
}
void tipar()
{
g=fopen("energii.out" , "w" );
for(int i = 1 ; i<= n ; ++i )
fprintf(g , "%d %d\n" , v[i].p , v[i].c );
fprintf(g , "%ld" , rez);
fclose(g);
}