이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "prison.h"
#include<bits/stdc++.h>
using namespace std;
//#define endl '\n'
#define ll long long
#define pii pair<int,int>
#define f first
#define s second
#define pb push_back
//#define int ll
const int md=1e9+7;
const int inf=1e9+7;
vector<vector<int>> ans(61);
int n;
void playB(int ii,int al,int ar,int bl,int br);
void playA(int ii,int al,int ar,int bl,int br){
if(al==ar&&bl==br) return;
ans[ii][0]=0;
int mid=al+(ar-al>>1);
for(int i=al;i<=ar;++i){
if(i>br) ans[ii][i]=-2;
else if(i<bl) ans[ii][i]=-1;
}
n=max(n,ii+1);
if(bl==br) return;
mid=bl+(br-bl>>1);
int temp=ii+1;
if(ii%2==1) temp+=2;
for(int i=bl;i<=mid;++i) ans[ii][i]=ii+2;
for(int i=mid+1;i<=br;++i) ans[ii][i]=temp;
playB(ii+2,al,mid,bl,br);
playB(temp,mid+1,ar,bl,br);
}
void playB(int ii,int al,int ar,int bl,int br){
// cout<<al<<" "<<ar<<" "<<bl<<" "<<br<<endl;
if(al==ar&&bl==br) return;
ans[ii][0]=1;
int mid=bl+(br-bl>>1);
for(int i=bl;i<=br;++i){
if(i>ar) ans[ii][i]=-1;
else if(i<al) ans[ii][i]=-2;
}
n=max(n,ii+1);
if(al==ar) return;
mid=al+(ar-al>>1);
int temp=ii+1;
if(ii%2==1) temp+=2;
for(int i=al;i<=mid;++i) ans[ii][i]=ii+2;
for(int i=mid+1;i<=ar;++i) ans[ii][i]=temp;
playA(ii+2,al,ar,al,mid);
playA(temp,al,ar,mid+1,ar);
}
vector<vector<int>> devise_strategy(int N){
ans.resize(100000);
for(auto &e:ans) e.resize(N+1);
n=0;
int mid=1+(N-1>>1);
for(int i=1;i<=mid;++i){
// cout<<mid<<" "<<N<<" "<<i<<endl;
ans[0][i]=1;
}
for(int i=mid+1;i<=N;++i) ans[0][i]=2;
playB(1,1,mid,1,N);
playB(2,mid+1,N,1,N);
// cout<<n<<" ====="<<endl;
ans.resize(n);
return ans;
}
컴파일 시 표준 에러 (stderr) 메시지
prison.cpp: In function 'void playA(int, int, int, int, int)':
prison.cpp:23:19: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
23 | int mid=al+(ar-al>>1);
| ~~^~~
prison.cpp:30:15: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
30 | mid=bl+(br-bl>>1);
| ~~^~~
prison.cpp: In function 'void playB(int, int, int, int, int)':
prison.cpp:42:19: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
42 | int mid=bl+(br-bl>>1);
| ~~^~~
prison.cpp:49:15: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
49 | mid=al+(ar-al>>1);
| ~~^~~
prison.cpp: In function 'std::vector<std::vector<int> > devise_strategy(int)':
prison.cpp:62:17: warning: suggest parentheses around '-' inside '>>' [-Wparentheses]
62 | int mid=1+(N-1>>1);
| ~^~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |