Submission #469971

#TimeUsernameProblemLanguageResultExecution timeMemory
469971rainboyLozinke (COCI17_lozinke)C11
100 / 100
27 ms8128 KiB
#include <stdio.h>
#include <string.h>

#define N	20000
#define L	10
#define N_	(2 + N * L)
#define A	26

int main() {
	static char ss[N][L + 1], used[N_];
	static int ll[N], tt[N_][A], kk[N_];
	int n, n_, h, h_, i, t, ans;

	scanf("%d", &n);
	n_ = 2;
	for (i = 0; i < n; i++) {
		scanf("%s", ss[i]), ll[i] = strlen(ss[i]);
		for (h = 0, t = 1; h < ll[i]; h++) {
			int a = ss[i][h] - 'a';

			if (!tt[t][a])
				tt[t][a] = n_++;
			t = tt[t][a];
		}
		kk[t]++;
	}
	ans = 0;
	for (i = 0; i < n; i++) {
		for (h = 0; h < ll[i]; h++)
			for (h_ = h, t = 1; h_ < ll[i]; h_++) {
				t = tt[t][ss[i][h_] - 'a'];
				if (!used[t])
					ans += kk[t], used[t] = 1;
			}
		for (h = 0; h < ll[i]; h++)
			for (h_ = h, t = 1; h_ < ll[i]; h_++) {
				t = tt[t][ss[i][h_] - 'a'];
				used[t] = 0;
			}
	}
	ans -= n;
	printf("%d\n", ans);
	return 0;
}

Compilation message (stderr)

lozinke.c: In function 'main':
lozinke.c:14:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |  scanf("%d", &n);
      |  ^~~~~~~~~~~~~~~
lozinke.c:17:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |   scanf("%s", ss[i]), ll[i] = strlen(ss[i]);
      |   ^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...