# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1076036 | 2024-08-26T10:40:23 Z | raduv | Mouse (info1cup19_mouse) | C++17 | 0 ms | 0 KB |
#include <bits/stdc++.h> #include "grader.h" using namespace std; void setinterval(int n, int l, int r, int val, vector<int> v){ int i; for( i = 1; i <= n; i++ ){{ if(i >= l && i <= r) v[i] = val; else v[i] = n + 1; // nu va modifica rezultatul query-ului } } void solve(int n){ vector <int> q; vector <int> v; int i, val, st, dr, mij; for( val = 1; val <= n; val++ ){ // cautam binar pentru fiecare valoare pozitia sa setinterval(n, 1, n, val, q); st = 1; dr = n + 1; while( dr - st > 1 ){ mij = (st + dr) / 2; setinterval(n, st, mij, val, q); if(query(q)) dr = mij; else st = mij; } v[st] = val; } query(v); return; }