Submission #989026

# Submission time Handle Problem Language Result Execution time Memory
989026 2024-05-27T10:11:32 Z crafticat Horses (IOI15_horses) C++17
0 / 100
1500 ms 9268 KB
#include <bits/stdc++.h>

using namespace std;
constexpr int MOD = 1e9 + 7;
using ll = long long;

vector<int> x, y;
int n;

int solve() {
    ll mult = 1;
    ll start = 0;
    ll ans = 0;

    for (int i = n - 1; i >= 0; --i) {
        mult *= x[i];
        if (mult >= MOD) { 
            start = i + 1;
            break;
        }
    }
    mult = 1;
    for (int i = 0; i < start; ++i) {
        mult *= x[i];
        mult %= MOD;
    }
    for (int i = start; i < n - 1; ++i) {
        mult *= x[i];
        ans = max(ans, mult * y[i]);
    }
    return ans % MOD;
}

int init(int N, int X[], int Y[]) {
    n = N;
    x.resize(N);
    y.resize(N);
    for (int i = 0; i < N; ++i) {
        x[i] = X[i];
        y[i] = Y[i];
    }

    return solve();
}
int updateX(int pos, int val) {
    x[pos] = val;
    return solve();
}
int updateY(int pos, int val) {
    y[pos] = val;
    return solve();
}

#if DEBUG
static char _buffer[1024];
static int _currentChar = 0;
static int _charsNumber = 0;
static FILE *_inputFile, *_outputFile;

static inline int _read() {
    if (_charsNumber < 0) {
        exit(1);
    }
    if (!_charsNumber || _currentChar == _charsNumber) {
        _charsNumber = (int)fread(_buffer, sizeof(_buffer[0]), sizeof(_buffer), _inputFile);
        _currentChar = 0;
    }
    if (_charsNumber <= 0) {
        return -1;
    }
    return _buffer[_currentChar++];
}

static inline int _readInt() {
    int c, x, s;
    c = _read();
    while (c <= 32) c = _read();
    x = 0;
    s = 1;
    if (c == '-') {
        s = -1;
        c = _read();
    }
    while (c > 32) {
        x *= 10;
        x += c - '0';
        c = _read();
    }
    if (s < 0) x = -x;
    return x;
}


int main() {
	_inputFile = fopen("horses.in", "rb");

	int N; N = _readInt();

	int *X = (int*)malloc(sizeof(int)*(unsigned int)N);
	int *Y = (int*)malloc(sizeof(int)*(unsigned int)N);

	for (int i = 0; i < N; i++) {
		X[i] = _readInt();
	}

	for (int i = 0; i < N; i++) {
		Y[i] = _readInt();
	}

	cout << init(N,X,Y) << endl;

	int M; M = _readInt();

	for (int i = 0; i < M; i++) {
		int type; type = _readInt();
		int pos; pos = _readInt();
		int val; val = _readInt();

		if (type == 1) {
			cout << updateX(pos,val) << endl;
		} else if (type == 2) {
            cout << updateY(pos,val) << endl;
		}
	}

	return 0;
}
#endif

Compilation message

horses.cpp: In function 'int solve()':
horses.cpp:27:18: warning: conversion from 'll' {aka 'long long int'} to 'int' may change value [-Wconversion]
   27 |     for (int i = start; i < n - 1; ++i) {
      |                  ^~~~~
horses.cpp:31:16: warning: conversion from 'll' {aka 'long long int'} to 'int' may change value [-Wconversion]
   31 |     return ans % MOD;
      |            ~~~~^~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 344 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1570 ms 9268 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 436 KB Output isn't correct
2 Halted 0 ms 0 KB -