Pagini recente » Cod sursa (job #1944517) | Cod sursa (job #652559) | Cod sursa (job #1021086) | Cod sursa (job #1073494) | Cod sursa (job #1770318)
//
// main.cpp
// CF 375
//
// Created by Albastroiu Radu on 10/3/16.
// Copyright © 2016 Albastroiu Radu. All rights reserved.
//
#include <iostream>
#include <fstream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cmath>
#include <vector>
#include <string>
#include <deque>
#include <unordered_map>
#include <cstdint>
using namespace std;
long long n,m,i,j,x,y,lakes,v[5001],deseuri, MEDIA, Nr_Changes;
unordered_map<long long, long long> songs;
int main()
{
#ifndef ONLINE_JUDGE
freopen("date.in","r",stdin);
freopen("date.out","w",stdout);
#endif
cin >> n >> m;
for(i=1;i<=m;i++)
{
songs[i]++;
songs[i]--;
}
for(i=1;i<=n;i++)
{
cin>>v[i];
songs[v[i]]++;
if(v[i]>m)
deseuri++;
}
MEDIA = n / m;
Nr_Changes = 0;
for( auto &element : songs)
{
if( element.second < MEDIA && element.first <= m )
{
if(deseuri > 0)
{
for(i=1;i<=n;i++)
{
if(v[i] > m)
{
Nr_Changes++;
v[i] = element.first;
element.second++;
deseuri--;
if(element.second >= MEDIA)
break;
}
}
}
if(element.second < MEDIA)
{
for(i=1;i<=n;i++)
{
if(songs[v[i]] > MEDIA)
{
Nr_Changes++;
songs[v[i]]--;
element.second++;
v[i] = element.first;
if(element.second >= MEDIA)
break;
}
}
}
}
}
cout<<MEDIA<<" "<<Nr_Changes<<"\n";
for(i=1;i<=n;i++)
{
cout<<v[i]<<" ";
}
return 0;
}