Cod sursa(job #169309)

Utilizator scvalexAlexandru Scvortov scvalex Data 1 aprilie 2008 16:21:20
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

int N, M, P;
int T[10001];
int X[10001],
	A[10001],
	B[10001];

int main(int argc, char *argv[]) {
	FILE *fi = fopen("nextseq.in", "r");
	fscanf(fi, "%d %d %d", &N, &M, &P);
	int aux;
	for (int i(0); i < N; ++i)
		fscanf(fi, "%d", X + i);
	sort(X, X + N);
	for (int i(0); i < N; ++i) 
		T[X[i]] = i + 1;
	for (int i(0); i < M; ++i) {
		fscanf(fi, "%d", &aux);
		A[P - M + i + 1] = T[aux];
	}
	for (int i(0); i < P; ++i) {
		fscanf(fi, "%d", &aux);
		B[P - P + i + 1] = T[aux];
	}
	fclose(fi);

	int tot(0);
	int put(1);
	int t(0);
	for (int i = P; i >= 0; --i) {
		int aux = B[i] - A[i] - t;
		t = 0;
		if (aux < 0) {
			aux += N;
			t = 1;
		}
		tot += aux * put;
		put *= N;
	}

	ofstream fout("nextseq.out");
	fout << tot - 1 << endl;
	fout.close();

	return 0;
}