Submission #494054

#TimeUsernameProblemLanguageResultExecution timeMemory
494054Wayne_YanChess Rush (CEOI20_chessrush)C++17
8 / 100
3 ms204 KiB
#include <bits/extc++.h> using namespace std; using namespace __gnu_pbds; #include "arithmetics.h" typedef int64_t ll; typedef long double ld; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #define pb emplace_back #define mp make_pair #define mt make_tuple #define pii pair<int,int> #define F(n) Fi(i,n) #define Fi(i,n) Fl(i,0,n) #define Fl(i,l,n) for(int i=l;i<n;i++) #define RF(n) RFi(i,n) #define RFi(i,n) RFl(i,0,n) #define RFl(i,l,n) for(int i=n-1;i>=l;i--) #define all(v) begin(v),end(v) #define siz(v) (ll(v.size())) #define get_pos(v,x) (lower_bound(all(v),x)-begin(v)) #define sort_uni(v) sort(begin(v),end(v)),v.erase(unique(begin(v),end(v)),end(v)) #define mem(v,x) memset(v,x,sizeof v) #define ff first #define ss second #define mid ((l+r)>>1) #define RAN(a,b) uniform_int_distribution<int> (a, b)(rng) #define debug(x) (cerr << (#x) << " = " << x << "\n") #define cmax(a,b) (a = max(a,b)) #define cmin(a,b) (a = min(a,b)) template <typename T> using max_heap = __gnu_pbds::priority_queue<T,less<T> >; template <typename T> using min_heap = __gnu_pbds::priority_queue<T,greater<T> >; template <typename T> using rbt = tree<T,null_type,less<T>,rb_tree_tag,tree_order_statistics_node_update>; int R,C,Q; int st, ed; void PP(){ if(st == ed) printf("%d 1\n", R-1); else printf("0 0\n"); } void RR(){ if(st == ed) printf("1 1"); else printf("2 2"); printf("\n"); } void QQ(){ if(st == ed){ printf("1 1\n"); return;} if( R == C ){ if( abs(st-ed) == R-1){ printf("1 1\n"); return; } } int ans = 0; ans ++; // first horizontal ans += 2; // first vertical ans ++; // first diagonal, then vertical; if((st+1+ed+R) % 2 == 0){ // (st, 1) & (ed, R) // up-right int k = (R-1+ed-st)>>1; int l = (R-1+st-ed)>>1; if(st+k <= C) ans++; // up-left k = (R-1-ed+st)>>1; l = (R-1-st+ed)>>1; if(st-k > 0) ans++; } if(R == C){ if(st == 1 || st == R || ed == 1 || ed == R) ans++; } printf("2 %d\n", ans); } void KK(){ printf("-1 -1\n"); } void BB(){ if((st+1+ed+R) & 1){ printf("0 0\n"); return; } } signed main(){ cin >> R >> C >> Q; while(Q--){ char c; cin >> c; cin >> st >> ed; switch(c){ case 'P': PP(); break; case 'Q': QQ(); break; case 'R': RR(); break; case 'B': BB(); break; case 'K': KK(); break; default: assert(0); break; } } return 0; }

Compilation message (stderr)

chessrush.cpp: In function 'void QQ()':
chessrush.cpp:63:9: warning: variable 'l' set but not used [-Wunused-but-set-variable]
   63 |     int l = (R-1+st-ed)>>1;
      |         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...