Cod sursa(job #1013994)

Utilizator varga13VarGaz13 varga13 Data 21 octombrie 2013 22:52:25
Problema Statistici de ordine Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>
#define a 500005
using namespace std;
ifstream f("sdo.in");
ofstream g("sdo.out");

int nou[a],cnt[11],v[a],n,kapa;

void Reset();
void Modify();
void Read();
void Write();
void Construct(int pz);
void Lerizare(int pz);
void Copy();


int main()
{
Read();
for(int j=0,pz=1;j<11;j++,pz*=10)
{
    Reset();
    Construct(pz);
    Modify();
    Lerizare(pz);
    Copy();


}


Write();
return 0;
}

void Read()
{
f>>n>>kapa;
for(int i=0;i<n;i++) f>>v[i];
}

void Write()
{
   //for(int i=0;i<n;i++) g<<v[i]<<' ';
   g<<v[kapa-1];
    f.close();
    g.close();
}

void Reset()
{
    for(int i=0;i<=11;i++) cnt[i]=0;
}

void Construct(int pz)
{
    for(int i=0;i<n;i++)
    cnt[(v[i]/pz)%10+1]++;

}

void Modify()
{
    for(int i=1;i<=11;i++) cnt[i]+=cnt[i-1];
}

void Lerizare(int pz)
{
     for(int i=0;i<n;i++)
    {
        cnt[(v[i]/pz)%10]++;
        nou[cnt[(v[i]/pz)%10]-1]=v[i];

    }

}

void Copy()
{
     for(int i=0;i<n;i++) v[i]=nou[i];
}