제출 #1038547

#제출 시각아이디문제언어결과실행 시간메모리
1038547vjudge1자리 배치 (IOI18_seats)C++17
5 / 100
4054 ms72532 KiB
#include "seats.h" #include<bits/stdc++.h> using namespace std; struct segtree{ int Tmn[1<<21],Tmx[1<<21]; void upd(int i,int l,int r,int p,int x){ if(l==r)return void(Tmn[i]=Tmx[i]=x); if(l+r>>1<p) upd(i*2+1,l+r+2>>1,r,p,x); else upd(i*2,l,l+r>>1,p,x); Tmn[i]=min(Tmn[i*2+1],Tmn[i*2]); Tmx[i]=max(Tmx[i*2],Tmx[i*2+1]); } int querymx(int i,int l,int r,int rr){ if(r<=rr)return Tmx[i]; if(l>rr)return-1e9; return max(querymx(i*2,l,l+r>>1,rr), querymx(i*2+1,l+r+2>>1,r,rr)); } int querymn(int i,int l,int r,int rr){ if(r<=rr)return Tmn[i]; if(l>rr)return 1e9; return min(querymn(i*2,l,l+r>>1,rr), querymn(i*2+1,l+r+2>>1,r,rr)); } } STr,STc; int span(int pos){ return (STr.querymx(1,1,1e6,pos)-STr.querymn(1,1,1e6,pos)+1)* (STc.querymx(1,1,1e6,pos)-STc.querymn(1,1,1e6,pos)+1); } int ans; vector<int>R_,C_; void act(int i){ STr.upd(1,1,1e6,1+i,R_[i]), STc.upd(1,1,1e6,1+i,C_[i]); } void give_initial_chart(int H, int W, std::vector<int> R, std::vector<int> C) { R_=R,C_=C; for(int i=0;i<H*W;) act(i++),ans+=i==span(i); } int swap_seats(int a, int b) { if(a>b)swap(a,b); for(int i=a+1;i<=b;i++) ans-=i==span(i); swap(R_[a],R_[b]); swap(C_[a],C_[b]); act(a),act(b); for(int i=a+1;i<=b;i++) ans+=i==span(i); return ans; }

컴파일 시 표준 에러 (stderr) 메시지

seats.cpp: In member function 'void segtree::upd(int, int, int, int, int)':
seats.cpp:8:13: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
    8 |         if(l+r>>1<p) upd(i*2+1,l+r+2>>1,r,p,x);
      |            ~^~
seats.cpp:8:35: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
    8 |         if(l+r>>1<p) upd(i*2+1,l+r+2>>1,r,p,x);
      |                                ~~~^~
seats.cpp:9:25: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
    9 |         else upd(i*2,l,l+r>>1,p,x);
      |                        ~^~
seats.cpp: In member function 'int segtree::querymx(int, int, int, int)':
seats.cpp:14:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   14 |         if(r<=rr)return Tmx[i]; if(l>rr)return-1e9;
      |         ^~
seats.cpp:14:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   14 |         if(r<=rr)return Tmx[i]; if(l>rr)return-1e9;
      |                                 ^~
seats.cpp:15:35: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   15 |         return max(querymx(i*2,l,l+r>>1,rr),
      |                                  ~^~
seats.cpp:16:34: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   16 |                 querymx(i*2+1,l+r+2>>1,r,rr));
      |                               ~~~^~
seats.cpp: In member function 'int segtree::querymn(int, int, int, int)':
seats.cpp:19:9: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   19 |         if(r<=rr)return Tmn[i]; if(l>rr)return 1e9;
      |         ^~
seats.cpp:19:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   19 |         if(r<=rr)return Tmn[i]; if(l>rr)return 1e9;
      |                                 ^~
seats.cpp:20:35: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   20 |         return min(querymn(i*2,l,l+r>>1,rr),
      |                                  ~^~
seats.cpp:21:34: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   21 |                 querymn(i*2+1,l+r+2>>1,r,rr));
      |                               ~~~^~
#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...