Cod sursa(job #2081665)

Utilizator VarticeanNicolae Varticean Varticean Data 4 decembrie 2017 22:35:02
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream in("shop.in");
ofstream out("shop.out");
struct pp{ ll f,s,t;};
pp p[40];
ll n,a,sum;
int mem[40];
ll putere(  ll x, ll y)
{
     ll p=1;
     while(y)
     {
          if( y%2 ) p*=x, y--;
          x*=x; y/=2;
     }
     return p;
}
bool cmp1( pp a, pp b){return a.f > b.f;}
bool cmp2( pp a, pp b){return a.t<b.t;}
int main()
{
     in >> n >> a >> sum;
     for(int i=1; i<=n; i++)
     {
          in >> p[i].f >> p[i].s;
          p[i].t = i;
          p[i].f = putere(a,p[i].f);
     }
     sort(p+1,p+n+1,cmp1);

     int i=1, ans=0;

    while( sum >0)
     {
          while( sum-p[i].f >=0 && p[i].s)
               {
                   sum-=p[i].f;
                   mem[p[i].t]++;
                   ans++;
                   p[i].s--;
               }
         i++;

     }
     out << ans <<'\n';
       sort( p+1,p+n+1,cmp2);
     for(int i=1; i<=n; i++) out << mem[p[i].t]<<' ';

    return 0;
}