Cod sursa(job #1209676)

Utilizator katakonst94Pirvu Constantin Catalin katakonst94 Data 18 iulie 2014 12:25:18
Problema Shop Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
void shellsort(int a[100][4],int n)
{
int j,i,m,mid;
for(m = n/2;m>0;m/=2)
{
for(j = m;j< n;j++)
{
for(i=j-m;i>=0;i-=m)
{
if(a[i+m][2]>=a[i][2])
break;
else
{
mid = a[i][2];
a[i][2] = a[i+m][2];
a[i+m][2] = mid;
mid = a[i][1];
a[i][1] = a[i+m][1];
a[i+m][1] = mid;
mid = a[i][3];
a[i][3] = a[i+m][3];
a[i+m][3] = mid;
}
}
}
}
}
int main()
{
    ifstream f("shop.in");
    ofstream g("shop.out");
    int n,v[100][4],c,l,s=0,m[100]={};
    f>>n;
    f>>c;
    f>>l;
    int cnt=0;
    for(int i=0;i<n;i++){
         f>>v[i][1];
         f>>v[i][2];
         v[i][3]=i;

    }
         shellsort(v,n);
         int nr=0;
         for(int i=0;i<n;i++)
         {
             int ct=v[i][2];
                 while((s+pow(c,v[i][1]))<=l&&ct>0)
                 {
                     s+=pow(c,v[i][1]);
                     ct--;
                 }
                 m[v[i][3]]=v[i][2]-ct;
                 nr+=v[i][2]-ct;
                // cout<< v[i][3]<<"  "<<v[i][2]-ct<<"  \n";
         }

g<<nr<<"\n";
for(int i=0;i<n;i++)
g<<m[i]<<" ";
    cout << "Hello world!" << endl;
    return 0;
}