답안 #620723

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
620723 2022-08-03T08:34:15 Z Hazem 말 (IOI15_horses) C++14
0 / 100
40 ms 13008 KB
#include <bits/stdc++.h>
#define LL long long

using namespace std;

const int M = 5e5+10;
const int MOD = 1e9+7;

LL add(LL a,LL b){
	return (a+b)%MOD;
}

LL mult(LL a,LL b){
	return (a*b)%MOD;
}

LL fastpow(LL n,LL k){

	LL ret = 1;

	while(k){

		if(k&1)ret = mult(ret,n);
		k /= 2;
		n = mult(n,n);
	}
	return ret;
}

LL divide(LL a,LL b){
	return (a*fastpow(b,MOD-2));
}

LL a[M],b[M],n;
LL pr = 1;

LL calc(){

	LL idx = max(1ll,n-29),cur = 1;
	for(int i=idx+1;i<=n;i++){
		
		if((cur*a[i]>b[idx])||(cur*a[i]*b[i]>b[idx]))
			idx = i,cur = 1;
		cur *= a[i];
	}

	cur = 1;
	for(int i=max(1ll,n-29);i<=idx;i++)
		cur = mult(cur,a[i]);
	
	return mult(mult(cur,pr),b[idx]);
}

int init(int N, int X[], int Y[]) {
	
	n = N;
	a[0] = 1;
	for(int i=1;i<=n;i++){
		a[i] = X[i-1];
		b[i] = Y[i-1];
		if(i<n-29)
			pr = mult(pr,a[i]);
	}

	return calc();
}

int updateX(int pos, int val) {	
	
	if(pos+1<n-29){
		pr = divide(pr,a[pos+1]);
		pr = mult(pr,val);
	}
	a[pos+1] = val;

	return calc();
}

int updateY(int pos, int val) {
	
	b[pos+1] = val;

	return calc();
}

Compilation message

horses.cpp: In function 'long long int calc()':
horses.cpp:40:15: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   40 |  for(int i=idx+1;i<=n;i++){
      |            ~~~^~
horses.cpp:48:15: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   48 |  for(int i=max(1ll,n-29);i<=idx;i++)
      |            ~~~^~~~~~~~~~
horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:65:13: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   65 |  return calc();
      |         ~~~~^~
horses.cpp: In function 'int updateX(int, int)':
horses.cpp:76:13: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   76 |  return calc();
      |         ~~~~^~
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:83:13: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   83 |  return calc();
      |         ~~~~^~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 0 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 40 ms 13008 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Incorrect 1 ms 212 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Incorrect 1 ms 256 KB Output isn't correct
3 Halted 0 ms 0 KB -