이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "gap.h"
#include <bits/stdc++.h>
using namespace std ;
#define ll long long
const int inf = 1e18 ;
ll findGap(int T , int n){
if ( T == 1 ){
vector <ll> vec ;
ll l = 1 , r = 1e18 , mn , mx , ans = 0 ;
while ( l <= r ){
if ( vec.size() == n ) break ;
MinMax( l , r , &mn , &mx ) ;
if ( mn == -1 || mx == -1 ) break ;
vec.push_back(mn) ;
if ( mn != mx ) vec.push_back(mx) ;
l = mn + 1 , r = mx-1 ;
}
sort ( vec.begin() , vec.end() ) ;
for ( int i = 1 ; i < n ; i ++ ) ans = max ( ans , vec[i]-vec[i-1] ) ;
return ans ;
}
ll l = 1 , r = 1e18 , x , y, ans = 0 , rr ;
MinMax( l , r , &x , &y ) ;
if ( n == 2 ) return abs(x-y) ;
rr = y ;
ll len = (y-x-1)/(n-1) ;
l = x , r = y ;
MinMax( x+1 , x+len+((y-x-1)%(n-1)) , &l , &r ) ;
if ( l != -1 ) ans = max ( ans , abs(x-l) ) ;
x += len+((y-x-1)%(n-1)) ; y = r ;
for ( ll i = 1 ; i < n-1 ; i ++ ){
MinMax( x+1 , x+len , &l , &r ) ;
x += len ;
if ( l == -1 ) continue ;
ans = max ( ans , abs( y-l ) ) ;
y = r ;
}
ans = max ( ans , abs(y-rr) ) ;
return ans ;
}
컴파일 시 표준 에러 (stderr) 메시지
gap.cpp:5:17: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+18' to '2147483647' [-Woverflow]
5 | const int inf = 1e18 ;
| ^~~~
gap.cpp: In function 'long long int findGap(int, int)':
gap.cpp:12:29: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
12 | if ( vec.size() == n ) break ;
| ~~~~~~~~~~~^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |