Submission #405437

# Submission time Handle Problem Language Result Execution time Memory
405437 2021-05-16T11:39:57 Z cgiosy Linear Garden (IOI08_linear_garden) C
100 / 100
5 ms 1228 KB
#include <stdio.h>
int main() {
	int N, M, X=0, Y=1;
	scanf("%d%d\n", &N, &M);
	char S[N];
	fread(S, 1, N, stdin);
	for(int i=0, t=0, l=0, r=0; i<N; i++) {
		X<<=N-i-1&1;
		X=X>=M ? X-M : X;
		if(S[i]=='P') {
			if(t==l && r-l<2) X+=2+(N-i-1&1), Y--;
			else if(t<l+2) X++;
			if(l>--t) l=t;
		} else if(r<++t) r=t;
	}
	printf("%d\n", (X+Y%M+M)%M);
}

Compilation message

linear_garden.c: In function 'main':
linear_garden.c:8:10: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
    8 |   X<<=N-i-1&1;
      |       ~~~^~
linear_garden.c:11:31: warning: suggest parentheses around '-' in operand of '&' [-Wparentheses]
   11 |    if(t==l && r-l<2) X+=2+(N-i-1&1), Y--;
      |                            ~~~^~
linear_garden.c:4:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
    4 |  scanf("%d%d\n", &N, &M);
      |  ^~~~~~~~~~~~~~~~~~~~~~~
linear_garden.c:6:2: warning: ignoring return value of 'fread' declared with attribute 'warn_unused_result' [-Wunused-result]
    6 |  fread(S, 1, N, stdin);
      |  ^~~~~~~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 460 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 588 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 716 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 844 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 5 ms 1228 KB Output is correct
2 Correct 5 ms 1228 KB Output is correct
3 Correct 4 ms 1228 KB Output is correct