Cod sursa(job #1874506)

Utilizator Dragne.Andrei11Dragne Andrei Dragne.Andrei11 Data 10 februarie 2017 02:00:40
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <bits/stdc++.h>
#define nmax 1005

using namespace std;

struct numere
{
    int energie;
    int cost;
}num[nmax];
int g, p;
int raspuns;

bool cmp(numere a, numere b)
{
    if(a.cost==b.cost)
        return a.energie>b.energie;
    return a.cost<b.cost;
}

void citire()
{
    scanf("%d%d", &g, &p);
    for(int i=1;i<=g;i++)
    {
        int x, y;
        scanf("%d%d", &x, &y);
        num[i].energie=x;
        num[i].cost=y;
    }
}
void rezolvare()
{
    for(int i=1;i<=g;i++)
    {
        if(num[i].energie>=p)
        {
            raspuns=num[i].cost;
            break;
        }
    }
    int rasp=0;
    int val=0;
    int last=0;
    for(int i=1;i<=g&&val<p;i++)
    {
        val+=num[i].energie;
        rasp+=num[i].cost;
        last=i;
    }
    for(int i=1;i<last;i++)
    {
        if(val-num[i].energie>=p)
        {
            val-=num[i].energie;
            rasp-=num[i].cost;
        }
        else
            break;
    }
    raspuns=rasp<raspuns?rasp:raspuns;
}
void afisare()
{
    printf("%d\n", raspuns);
}

int main()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);

    citire();
    rezolvare();
    afisare();

    return 0;
}