Pagini recente »
Istoria paginii runda/concurs_01_iq_academy_clasa_7
|
Atașamentele paginii 2019-02-28-clasa-6-tema-22
|
Concurs IQ Academy | Clasa a 10-a | Șiruri de caractere
|
Concurs clasa a 9-a
|
Cod sursă (job #786447)
Cod sursă (job
#786447)
#include <bits/stdc++.h>
using namespace std;
char f[5002];
int cur[5000];
int gen[5000];
int same(int n)
{
int i;
i = 0;
while(i<n && cur[i]==gen[i])
i++;
if(i==n)
return 1;
else
return 0;
}
int add(int n, int i)
{
if(i>=0)
{
int j;
j = gen[i]+1;
while(j<=n && f[j]>1)
j++;
if(j<=n)
{
if(i+1==n)
f[gen[i]]--;
f[j]++;
gen[i] = j;
}
else
//if(f[gen[i]]>2 || gen[i]>n)
{
j = 1;
f[gen[i-1]]--;
while(j<=n && f[j]>1)
j++;
if(j<=n)
{
if(i+1==n)
f[gen[i]]--;
f[j]++;
gen[i] = j;
add(n, i-1);
}
}
}
}
int main()
{
FILE *fin, *fout;
int n, q, i, j, k, d;
fin = fopen("dejavu.in", "r");
fout = fopen("dejavu.out", "w");
fscanf(fin, "%d%d", &n, &q);
for(j = 0; j<q; j++)
{
for(i=0; i<n; i++)
{
gen[i] = i/2+1;
if((i+1)%2==0)
f[i/2+1] = 2;
fscanf(fin, "%d", &cur[i]);
}
if(n%2==1)
f[(n-1)/2+1] = 1;
/*for(i=0; i<n; i++)
fprintf(fout, "%d", cur[i]);
fprintf(fout, "\n");
for(i=0; i<n; i++)
fprintf(fout, "%d", gen[i]);
fprintf(fout, "\n");
for(i=0; i<=5; i++)
fprintf(fout, "%d", f[i]);
fprintf(fout, "\n");*/
d=0;
//for(k=0; k<12; k++)
while(same(n)==0)
{
add(n, n-1);
/*for(i=0; i<=5; i++)
fprintf(fout, "%d", f[i]);
fprintf(fout, "\n");
for(i=0; i<n; i++)
fprintf(fout, "%d", gen[i]);
fprintf(fout, "\n");*/
d = (d+1)%1000000007;
}
fprintf(fout, "%d\n", d);
}
fclose(fin);
fclose(fout);
return 0;
}