Pagini recente » Cod sursa (job #737654) | Cod sursa (job #278594) | Cod sursa (job #1077006) | Cod sursa (job #2527681) | Cod sursa (job #785308)
Cod sursa(job #785308)
#include <cstdio>
using namespace std;
const int Omax = 210;
const int Steps = 210;
const int O = 200;
int D[Steps][Omax];
int Init[Omax];
int Last[Omax],Nbr;
int N,G,Sum;
void Solve(int Act)
{
int i=Act;
for (int j=O;j;--j)
if ( i-j >= 0 )
if ( D[(i-j)%Steps][j] )
{
for (int k=0;k<=O;++k)
D[i%Steps][k]=D[(i-j)%Steps][k],
Last[k]=D[(i-j)%Steps][k];
--D[i%Steps][j],--D[i%Steps][0];
--Last[j],--Last[0];
Nbr=Act;
return;
}
}
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%d %d\n",&N,&G);
for (int i=1,X;i<=N;++i)
{
scanf("%d\n",&X);
++D[0][X];
++D[0][0];
++Init[X];
++Init[0];
Sum+=X;
}
++D[0][0];
for (int i=1;i<=G;++i) Solve(i);
int Sol,Co;
Sol=Nbr;
Co=Init[0]-Last[0]+1;
printf("%d %d\n",Sol,Co);
for (int j=1;j<=O;++j)
for ( ; Init[j]-Last[j] ; ++Last[j] )
printf("%d\n",j);
fclose(stdin);
fclose(stdout);
}