# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
485889 | 2021-11-09T15:52:00 Z | gavgav | Fountain (eJOI20_fountain) | C++17 | 120 ms | 7420 KB |
#include <stdio.h> #define MAX_N 100000 #define MAX_M 200000 #define MAX_D 1000000000 #define MAX_S 100000000000000 struct reservoir { long long diameters, v; }; struct query { int level, v, rasp; }; int stiva[MAX_N + 1], next[MAX_M + 1], liste[MAX_N + 1]; long long sumaNec[MAX_N + 1]; struct reservoir reservoirs[MAX_N + 1]; struct query q[MAX_M + 1]; int main() { int height, queries_number, top, st, dr, mij, i, j; long long sumaV; scanf( "%d%d", &height, &queries_number); reservoirs[0].diameters = MAX_D + 1; reservoirs[0].v = 0; for ( i = 1; i <= height; i++ ) scanf( "%d%d", &reservoirs[i].diameters, &reservoirs[i].v ); for ( i = 1; i <= queries_number; i++ ) { scanf( "%d%d", &q[i].level, &q[i].v ); next[i] = liste[q[i].level]; liste[q[i].level] = i; } stiva[0] = 0; sumaNec[0] = -MAX_S - 1; top = 0; sumaV = 0; for ( i = height; i >= 1; i-- ) { while ( reservoirs[i].diameters >= reservoirs[stiva[top]].diameters ) { sumaV -= reservoirs[stiva[top]].v; top--; } top++; stiva[top] = i; sumaNec[top] = sumaV; sumaV += reservoirs[i].v; j = liste[i]; while ( j != 0 ) { st = top + 1; dr = 0; while ( st - dr > 1 ) { mij = (st + dr) / 2; if ( sumaV - sumaNec[mij] >= q[j].v ) dr = mij; else st = mij; } q[j].rasp = stiva[dr]; j = next[j]; } } for ( i = 1; i <= queries_number; i++ ) printf( "%d\n", q[i].rasp ); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Correct | 1 ms | 204 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Correct | 2 ms | 332 KB | Output is correct |
5 | Correct | 1 ms | 332 KB | Output is correct |
6 | Correct | 1 ms | 332 KB | Output is correct |
7 | Correct | 1 ms | 332 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 73 ms | 5608 KB | Output is correct |
2 | Correct | 81 ms | 5848 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Correct | 1 ms | 204 KB | Output is correct |
3 | Correct | 1 ms | 332 KB | Output is correct |
4 | Correct | 2 ms | 332 KB | Output is correct |
5 | Correct | 1 ms | 332 KB | Output is correct |
6 | Correct | 1 ms | 332 KB | Output is correct |
7 | Correct | 1 ms | 332 KB | Output is correct |
8 | Correct | 73 ms | 5608 KB | Output is correct |
9 | Correct | 81 ms | 5848 KB | Output is correct |
10 | Correct | 1 ms | 332 KB | Output is correct |
11 | Correct | 48 ms | 3392 KB | Output is correct |
12 | Correct | 120 ms | 7420 KB | Output is correct |
13 | Correct | 102 ms | 6772 KB | Output is correct |
14 | Correct | 86 ms | 6464 KB | Output is correct |
15 | Correct | 75 ms | 6472 KB | Output is correct |