# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
27823 | 2017-07-14T07:23:05 Z | 서규호(#1160) | Cultivation (JOI17_cultivation) | C++14 | 2000 ms | 2032 KB |
#include <bits/stdc++.h> #define lld long long #define pii pair<int,int> #define pll pair<lld,lld> #define pb push_back #define next nextt #define left leftt #define right rightt #define Inf 1000000000 #define Linf 1000000000000000000LL #define Mod 1000000007LL using namespace std; int N; lld R,C,ans; struct data{ lld x,y; }a[302]; multiset<lld> S; void process(lld l,lld r){ lld ly,ry,lry; ly = ry = lry = 0; vector<pll> tmp; for(int i=1; i<=N; i++){ tmp.pb({max((lld)1,a[i].x-l),a[i].y}); tmp.pb({min(R,a[i].x+r)+1,-a[i].y}); } sort(tmp.begin(),tmp.end()); if(tmp[0].first != 1 || tmp.back().first != R+1) return; for(int i=0; i<tmp.size(); i++){ int e; for(int j=i; j<tmp.size(); j++){ if(tmp[i].first != tmp[j].first) break; e = j; } for(int j=i; j<=e; j++){ if(tmp[j].second > 0) S.insert(tmp[j].second); else S.erase(S.find(-tmp[j].second)); } if(S.empty() && tmp[i].first <= R) return; if(S.empty()) break; auto it = S.end(); it--; ly = max(ly,*S.begin()-1); ry = max(ry,C-(*it)); lld bef; for(it = S.begin(); it != S.end(); it++){ if(it == S.begin()){ bef = *it; continue; } lry = max(lry,*it-bef-1); bef = *it; } i = e; } if(ly > ry) swap(ly,ry); if(ly+ry < lry){ ry = lry-ly; } ans = min(ans,min(l,r)+min(ly,ry)+l+r+ly+ry); } int main(){ //freopen("input.txt","r",stdin); scanf("%lld %lld %d",&R,&C,&N); for(int i=1; i<=N; i++){ scanf("%d %d",&a[i].x,&a[i].y); } sort(a+1,a+N+1,[&](data &x,data &y){ return x.x < y.x; }); ans = Linf; for(int i=0; i<=R-1; i++){ for(int j=0; j<=R-1; j++){ process(i,j); } } process(3,0); printf("%lld\n",ans); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2032 KB | Output is correct |
2 | Incorrect | 0 ms | 2032 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2032 KB | Output is correct |
2 | Incorrect | 0 ms | 2032 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2032 KB | Output is correct |
2 | Incorrect | 0 ms | 2032 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 2000 ms | 2032 KB | Execution timed out |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Execution timed out | 2000 ms | 2032 KB | Execution timed out |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 2032 KB | Output is correct |
2 | Incorrect | 0 ms | 2032 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |