답안 #382524

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
382524 2021-03-27T14:53:07 Z ignaciocanta 구경하기 (JOI13_watching) C++14
100 / 100
573 ms 16380 KB
#include <bits/stdc++.h>
 
using namespace std;
 
using tint = long long;
using ld = long double;
 
#define FOR(i,a,b) for (int i = (a); i < (b); ++i)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i)
#define R0F(i,a) ROF(i,0,a)
#define trav(a,x) for (auto& a: x)
 
using pi = pair<int,int>;
using pl = pair<tint,tint>;
using vi = vector<int>;
using vpi = vector<pi>;
using vpl = vector<pl>;
using vvi = vector<vi>;
using vl = vector<tint>;
using vb = vector<bool>;
 
#define pb push_back
#define pf push_front
#define rsz resize
#define all(x) begin(x), end(x)
#define rall(x) x.rbegin(), x.rend() 
#define sz(x) (int)(x).size()
#define ins insert
 
#define f first
#define s second
#define mp make_pair
 
#define DBG(x) cerr << #x << " = " << x << endl;
 
const int MOD = 1e9+9; //change this
const tint mod = 998244353;
const int MX = 2005;
const tint INF = 1e18; 
const int inf = 2e9;
const ld PI = acos(ld(-1)); 
const ld eps = 1e-5;
 
const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};
 
template<class T> void remDup(vector<T> &v){ 
    sort(all(v)); v.erase(unique(all(v)),end(v));
}
 
template<class T> bool ckmin(T& a, const T& b) {
    return b < a ? a = b, 1 : 0; 
} 
template<class T> bool ckmax(T& a, const T& b) {
    return a < b ? a = b, 1 : 0; 
}
 
bool valid(int x, int y, int n, int m){
    return (0<=x && x<n && 0<=y && y<m);
}
 
int cdiv(int a, int b) { return a/b+((a^b)>0&&a%b); } //redondea p arriba
int fdiv(int a, int b) { return a/b-((a^b)<0&&a%b); } //redondea p abajo
 
void NACHO(string name = ""){
    ios_base::sync_with_stdio(0); cin.tie(0);
    if(sz(name)){
        freopen((name+".in").c_str(), "r", stdin);
        freopen((name+".out").c_str(), "w", stdout);
    }
}

vi a;
vvi dp;
int n, p, q;

bool f(int w){
	dp.clear();
	dp.rsz(n+1, vi(min(n+1, p+1), inf));
	dp[0][0] = 0;
	int l = 1, r = 1;
	FOR(i, 1, n+1){
		while(a[i]-a[l]+1 > w) ++l;
		while(a[i]-a[r]+1 > 2*w) ++r;
		F0R(j, min(n+1, p+1)){
			if(j > 0) ckmin(dp[i][j], dp[l-1][j-1]);
			ckmin(dp[i][j], dp[r-1][j]+1);
		}
	}
	int mini = inf;
	F0R(j, min(n+1, p+1)) ckmin(mini, dp[n][j]);
	if(mini <= q) return 1;
	return 0;
}

int main(){
	NACHO();
	cin >> n >> p >> q;
	a.rsz(n+1);
	FOR(i, 1, n+1) cin >> a[i];
	int low = 0, high = 1e9;
	sort(all(a));
	while(high-low > 1){
		int mid = low+(high-low)/2;
		if(f(mid)) high = mid;
		else low = mid;
	}
	cout << high << "\n";
}

Compilation message

watching.cpp: In function 'void NACHO(std::string)':
watching.cpp:69:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   69 |         freopen((name+".in").c_str(), "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
watching.cpp:70:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   70 |         freopen((name+".out").c_str(), "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 2 ms 364 KB Output is correct
5 Correct 1 ms 384 KB Output is correct
6 Correct 2 ms 364 KB Output is correct
7 Correct 2 ms 364 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
9 Correct 1 ms 364 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 2 ms 364 KB Output is correct
12 Correct 2 ms 364 KB Output is correct
13 Correct 2 ms 364 KB Output is correct
14 Correct 1 ms 364 KB Output is correct
15 Correct 1 ms 364 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 492 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 451 ms 12276 KB Output is correct
4 Correct 570 ms 16232 KB Output is correct
5 Correct 29 ms 1084 KB Output is correct
6 Correct 573 ms 16380 KB Output is correct
7 Correct 8 ms 620 KB Output is correct
8 Correct 47 ms 1468 KB Output is correct
9 Correct 249 ms 6652 KB Output is correct
10 Correct 559 ms 15444 KB Output is correct
11 Correct 36 ms 1372 KB Output is correct
12 Correct 321 ms 8328 KB Output is correct
13 Correct 7 ms 492 KB Output is correct
14 Correct 8 ms 620 KB Output is correct
15 Correct 8 ms 620 KB Output is correct