Submission #1027813

#TimeUsernameProblemLanguageResultExecution timeMemory
1027813vjudge1Trampoline (info1cup20_trampoline)C++17
Compilation error
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; #define lalala ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); #define ll long long // #define int long long int #define endl '\n' #define N 600100 #define M 400100 #define offf 2530 #define big 2147483647 #define bigg 9223372036854775807 #define pb push_back #define p push #define ins insert #define f first #define s second tuple<int,int,int> bfs[M]; vector<int> adj[N], comprez; vector<pair<int,int>> ikinci; int gittik[M]; bool arr[offf][offf],green[offf][offf]; void dfs(int x,int a,int b){ if(x==-1)return; if(gittik[x])return ; gittik[x]=1; pair<int,int> pa={a+1,b}; int yeni=(upper_bound(ikinci.begin(),ikinci.end(),pa)-ikinci.begin())-1; if(ikinci[yeni].f==a+1&&ikinci[yeni].s==b&&gittik[yeni]==0){ bfs[x]={yeni,a+1,b}; dfs(yeni,a+1,b); return; } int kim=(lower_bound(comprez.begin(),comprez.end(),a)-comprez.begin()); int yer=(lower_bound(adj[kim].begin(),adj[kim].end(),b)-adj[kim].begin()); if(yer!=adj[kim].size()){ pa={a,adj[kim][yer]}; yeni=(upper_bound(ikinci.begin(),ikinci.end(),pa)-ikinci.begin())-1; bfs[x]={yeni,a,adj[kim][yer]}; dfs(yeni,a,adj[kim][yer]); return; } bfs[x]={-1,-1,-1}; } int defese(int x,int a,int b,int s,int e){ if(a>s||b>e)return 0; if(a==s){ return 1; } int aa,bb,cc;tie(aa,bb,cc)=bfs[x]; if(a==-1)return 0; return defese(aa,bb,cc,s,e); } void qua(){ int x,y,a,b;cin>>x>>y>>a>>b; if(x==a){ if(y<=b)cout<<"Yes"<<endl; else cout<<"No"<<endl; return; } if(x>a||y>b){ cout<<"No"<<endl; return; } int kim=(lower_bound(comprez.begin(),comprez.end(),x)-comprez.begin()); if(kim==(int)comprez.size()||comprez[kim]!=x){ cout<<"No"<<endl; return; } int yer=(lower_bound(adj[kim].begin(),adj[kim].end(),y)-adj[kim].begin()); if(yer==adj[kim].size()){ cout<<"No"<<endl; return; } pair<int,int> pa={x,adj[kim][yer]}; int yeni=(upper_bound(ikinci.begin(),ikinci.end(),pa)-ikinci.begin())-1; int ok=defese(yeni,x,adj[kim][yer],a,b); if(ok)cout<<"Yes"<<endl; else cout<<"No"<<endl; } inline bool ancakama(int x,int y,int a,int b,int r,int c){ queue<pair<int,int>> q; q.p({x,y}); if(x>a)return 0; if(y>b)return 0; if(x==a)return 1; while((int)q.size()){ x=q.front().f,y=q.front().s; q.pop(); if(arr[x][y])continue; arr[x][y]=1; if(x==a&&y<=b)return 1; if(y>b)continue; if(x>a)continue; if(x!=r&&arr[x+1][y]==0&&green[x][y]){ q.p({x+1,y}); continue; } if(y!=c&&arr[x][y+1]==0){ q.p({x,y+1}); } } return 0; } void yaaap(vector<pair<int,int>> v, int n,int q,int r,int c){ for(auto u:v){ green[u.s][u.f]=1; } while(q--){ memset(arr,0,sizeof(arr)); int x,y,a,b;cin>>x>>y>>a>>b; int ok=dfs(x,y,a,b,r,c); if(ok)cout<<"Yes"<<endl; else cout<<"No"<<endl; } } void solve(){ int r,c,n;cin>>r>>c>>n; vector<pair<int,int>> v; ikinci.clear(); comprez.clear(); vector<int> yedek; for(int i=0;i<n;i++){ int a,b;cin>>a>>b; v.pb({b,a}); yedek.pb(a);yedek.pb(b); yedek.pb(a+1); ikinci.pb({a,b}); ikinci.pb({a+1,b}); } int q;cin>>q; if(q<=4000&&r<=offf-10&&c<=offf-10){ yaaap(v,n,q,r,c); return; } sort(v.begin(),v.end()); sort(yedek.begin(),yedek.end()); sort(ikinci.begin(),ikinci.end()); comprez.pb(yedek[0]); for(int i=1;i<n*3;i++){ if(yedek[i]!=yedek[i-1])comprez.pb(yedek[i]); if(i<=n*2+5){ gittik[i]=0; } adj[i].clear(); } adj[0].clear(); gittik[0]=0; for(auto u:v){ int yer=u.s; int kim=lower_bound(comprez.begin(),comprez.end(),yer)-comprez.begin(); adj[kim].pb(u.f); } for(int i=0;i<(int)ikinci.size();i++){ if(gittik[i])continue; dfs(i,ikinci[i].f,ikinci[i].s); } while(q--){ qua(); } } signed main(){ lalala; solve(); }

Compilation message (stderr)

trampoline.cpp: In function 'void dfs(int, int, int)':
trampoline.cpp:40:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |      if(yer!=adj[kim].size()){
      |         ~~~^~~~~~~~~~~~~~~~~
trampoline.cpp: In function 'void qua()':
trampoline.cpp:78:12: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   78 |      if(yer==adj[kim].size()){
      |         ~~~^~~~~~~~~~~~~~~~~
trampoline.cpp: In function 'void yaaap(std::vector<std::pair<int, int> >, int, int, int, int)':
trampoline.cpp:121:26: error: too many arguments to function 'void dfs(int, int, int)'
  121 |    int ok=dfs(x,y,a,b,r,c);
      |                          ^
trampoline.cpp:24:10: note: declared here
   24 |     void dfs(int x,int a,int b){
      |          ^~~
trampoline.cpp:121:14: error: void value not ignored as it ought to be
  121 |    int ok=dfs(x,y,a,b,r,c);
      |           ~~~^~~~~~~~~~~~~