Pagini recente » Cod sursa (job #1414090) | Cod sursa (job #2949380) | Cod sursa (job #2090228) | Cod sursa (job #2065344) | Cod sursa (job #916720)
Cod sursa(job #916720)
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int i, G, W, *EN = new int [1002], *CST = new int [1002], *v = new int[1001], k=1, *SEN = new int(0), *SCST = new int(0);
void quicksort(int left, int right, int x[])
{
int i,j,mid,aux;
i = left;
j = right;
mid = x[(left+right)/2];
while(i<=j)
{
while(x[i]<mid)
i++;
while(x[j]>mid)
j--;
if(i<=j)
{
aux = x[i];
x[i] = x[j];
x[j] = aux;
aux = EN[i];
EN[i] = EN[j];
EN[j] = aux;
i++;
j--;
}
}
if(i<right)
{
quicksort(i, right, x);
}
if(j>left)
{
quicksort(left, j, x);
}
}
void Split(void)
{
for(i=1; i<=2*G; i=i+2)
{
EN[k] = v[i];
CST[k] = v[i+1];
k++;
}
delete [] v;
}
int main()
{
f>>G;
f>>W;
int *dyn_sum = new int;
*dyn_sum = 0;
for(i=1; i<= G*2; i++)
{
f>>v[i];
}
for(i=1; i<=G*2; i = i + 2)
{
*dyn_sum = *dyn_sum + v[i];
if(v[i] == W)
{
g<<v[i+1]<<" ";
f.close();
g.close();
return 0;
}
}
if(*dyn_sum < W)
{
delete dyn_sum;
g<<-1;
f.close();
g.close();
return 0;
}
else{
Split();
quicksort(1, G, CST);
for(i=1; i<=G; i++)
{
*SEN = *SEN + EN[i];
*SCST = *SCST + CST[i];
if(*SEN>=W)
{
delete [] EN;
delete [] CST;
delete SEN;
g<<*SCST<<"\n";
delete SCST;
f.close();
g.close();
return 0;
}
}
}
}