이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "happiness.h"
#include <bits/stdc++.h>
using namespace std;
int mistakes;
set<int> s;
unordered_map<int, int> frecv;
void add( int x ) {
//printf( "add %d\n", x );
if ( s.size() == 0 ) {
s.insert( x );
return;
}
if ( x <= *s.begin() ) {
if ( 2 * x < *s.begin() )
mistakes++;
s.insert( x );
return;
}
if ( (*s.rbegin()) <= x ) {
if ( 2 * (*s.rbegin()) < x )
mistakes++;
s.insert( x );
return;
}
auto u = s.upper_bound( x );
auto l = u;
l--;
int a = *l, b = *u;
//printf( "in add %d %d %d\n", a, x, b );
if ( 2 * a < b )
mistakes--;
if ( 2 * a < x )
mistakes++;
if ( 2 * x < b )
mistakes++;
s.insert( x );
}
void remove( int x ) {
//printf( "remove %d\n", x );
s.erase( x );
if ( s.size() == 0 ) {
return;
}
if ( x <= *s.begin() ) {
if ( 2 * x < *s.begin() )
mistakes--;
return;
}
if ( (*s.rbegin()) <= x ) {
if ( 2 * (*s.rbegin()) < x )
mistakes--;
return;
}
auto u = s.upper_bound( x );
auto l = u;
l--;
int a = *l, b = *u;
//printf( "in remove %d %d %d\n", a, x, b );
if ( 2 * a < b )
mistakes++;
if ( 2 * a < x )
mistakes--;
if ( 2 * x < b )
mistakes--;
}
bool init( int n, long long m, long long c[] ) {
mistakes = 0;
for ( int i = 0; i < n; i++ ) {
if ( frecv[c[i]] == 0 )
add( c[i] );
frecv[c[i]]++;
//printf( "mistakes %d\n", mistakes );
}
return (mistakes == 0);
}
bool is_happy( int event, int n, long long c[] ) {
for ( int i = 0; i < n; i++ ) {
if ( event == 1 ) {
if ( frecv[c[i]] == 0 )
add( c[i] );
frecv[c[i]]++;
} else {
frecv[c[i]]--;
if ( frecv[c[i]] == 0 )
remove( c[i] );
}
//printf( "mistakes %d\n", mistakes );
}
return (mistakes == 0);
}
컴파일 시 표준 에러 (stderr) 메시지
grader.cpp: In function 'int main()':
grader.cpp:16:12: warning: unused variable 'max_code' [-Wunused-variable]
16 | long long max_code;
| ^~~~~~~~| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |