Submission #288452

#TimeUsernameProblemLanguageResultExecution timeMemory
288452AaronNaiduHorses (IOI15_horses)C++14
34 / 100
1589 ms12252 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;

ll mod = 1000000007;
ll n;
vector<ll> x, y;

int solveProblem() {
    int maxInd = -1;
    ld maxAns = -1;
    ld currAns = 0;
    for (int i = 0; i < n; i++)
    {
        currAns += log10(x[i]);
        currAns += log10(y[i]);
        if (currAns > maxAns)
        {
            maxAns = currAns;
            maxInd = i;
        }
        currAns -= log10(y[i]);
    }
    ll finAns = 1;
    for (int i = 0; i < maxInd; i++)
    {
        finAns *= x[i];
        finAns %= mod;
    }
    finAns *= x[maxInd];
    finAns %= mod;
    finAns *= y[maxInd];
    finAns %= mod;
    return finAns;
}

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

int updateX(int pos, int val) {
    x[pos] = val;
    return solveProblem();
}

int updateY(int pos, int val) {
    y[pos] = val;
    return solveProblem();
}

Compilation message (stderr)

horses.cpp: In function 'int solveProblem()':
horses.cpp:35:12: warning: conversion from 'll' {aka 'long long int'} to 'int' may change value [-Wconversion]
   35 |     return finAns;
      |            ^~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...