Cod sursa(job #275233)

Utilizator runnaway90Oprescu Radu Constantin runnaway90 Data 10 martie 2009 12:28:11
Problema NextSeq Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define M 10006

using namespace std;

char e[2000000];
int a[M], b[M], c[M], nr[M], n, m, p, i, r, j, q;

int main(){
int w, r, s;
	freopen("nextseq.in","r",stdin);
	freopen("nextseq.out","w",stdout);
	scanf("%d %d %d\n", &n, &m, &p);
	gets(e); w = strlen(e);
	r = 0;
	for (i = 0; i < w; ++i){
	    s = 0;
        while (e[i] >= '0' && e[i] <= '9') s *= 10, s +=e[i]- '0', ++i;
        a[++r] = s;
	}
	sort(a+1, a+n+1);

	r = 0;
    gets(e); w = strlen(e);

	for (i = 0; i < w; ++i){
	    s = 0;
        while (e[i] >= '0' && e[i] <= '9') s *= 10, s += e[i]- '0', ++i;
        b[++r] = nr[s];
	}

    gets(e); w = strlen(e);

	for (i = 0; i < w; ++i){
	    s = 0;
        while (e[i] >= '0' && e[i] <= '9') s *= 10, s +=e[i]- '0', ++i;
        c[++r] = nr[s];
	}

	b[0] = m; c[0] = p;

	for(j = 1; ; ++j)
	{
		for (i = b[0]; b[i] == n-1; --i);
		if (i){
			b[i]++;
			for (q = i+1; q <= b[0]; ++q) b[q] = 0;
		}
		else
		{
			b[0]++;
			for (q = 1; q <= b[0]; ++q) b[q] = 0;
		}
		if (b[0] < c[0]);
		else
			if (b[0] > c[0]) break;
			else{
				i = 1;
				while (b[i] == c[i]) ++i;
				if (b[i] >= c[i]) break;
			}
	}
	printf("%d",j-1);

	return 0;
}