제출 #206136

#제출 시각아이디문제언어결과실행 시간메모리
206136awlintqaa말 (IOI15_horses)C++14
17 / 100
91 ms17084 KiB
#define fast ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
#include <bits/stdc++.h>
using namespace std;
#define sqr 200
#define mid (l+r)/2
#define pb push_back
#define ppb pop_back
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define ins insert
#define era erase
#define C continue
#define mem(dp,i) memset(dp,i,sizeof(dp))
#define mset multiset
typedef long long ll;
typedef short int si;
typedef long double ld;
typedef pair<int,int> pi;
typedef pair<ll,ll> pll;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<pi> vpi;
typedef vector<pll> vpll;
const ll mod=1e9+7;
const ll inf= 4e18;
const ld pai=acos(-1);
#include "horses.h"
ll n ;
ll a[500009],cost[500009] , bs[500009];
bool overflow(ll x ,ll y){
        return (x > inf / y);
}
ll solve(){
        ll st=0;
        ll crnt =1 ;
        for(ll i=n-1;i>=0;i--){
                if(overflow(crnt*a[i],(ll)1e9) ){
                        st=i+1;
                        break;
                }
                crnt*=a[i];
        }
        crnt=1;
        ll mx=0;
        ll id=0;
        for(ll i=st;i<n;i++){
                crnt*=a[i];
          		if ( overflow ( cost[i] , crnt))while(1){}
                if(crnt*cost[i] > mx ){
                        mx=crnt*cost[i];
                        id=i;
                }
        }
         crnt = bs[st];
        for ( int i = st+1 ;i <= id ;i ++ ){
                crnt *= a[i];
                crnt%=mod;
        }
        return ((crnt%mod)*(cost[id]%mod))%mod;
}

int init(int N, int X[], int Y[]) {
        n = N;
        for ( int i =0 ;i < n ;i ++ ) a[i]=X[i];
        for ( int i =0 ;i < n ;i ++ ) cost [i] = Y [i];
        ll crnt = 1;
        for ( int i =0 ;i < n ;i ++ ){
                crnt *= a[i];
                crnt%=mod;
                bs [i] = crnt;
        }
        //cout << solve() <<endl;
        return solve();
}

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

컴파일 시 표준 에러 (stderr) 메시지

horses.cpp: In function 'll solve()':
horses.cpp:57:25: warning: conversion to 'int' from 'll {aka long long int}' may alter its value [-Wconversion]
         for ( int i = st+1 ;i <= id ;i ++ ){
                       ~~^~
horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:75:21: warning: conversion to 'int' from 'll {aka long long int}' may alter its value [-Wconversion]
         return solve();
                ~~~~~^~
horses.cpp: In function 'int updateX(int, int)':
horses.cpp:80:21: warning: conversion to 'int' from 'll {aka long long int}' may alter its value [-Wconversion]
         return solve();
                ~~~~~^~
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:84:21: warning: conversion to 'int' from 'll {aka long long int}' may alter its value [-Wconversion]
         return solve();
                ~~~~~^~
#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...