Submission #85104

#TimeUsernameProblemLanguageResultExecution timeMemory
85104nikolapesic2802popa (BOI18_popa)C++14
0 / 100
2 ms532 KiB
#include <bits/stdc++.h> #include "popa.h" using namespace std; #define ll long long #define pb push_back /*bool query(int a,int b,int c,int d) { printf("%i-%i %i-%i?\n",a,b,c,d); int res; scanf("%i",&res); return res; }*/ //int query(int a,int b,int c,int d); bool levo(int poz) { return query(poz,poz,poz,poz-1); } bool desno(int poz) { return query(poz,poz,poz,poz+1); } int n; bool inside(int poz) { return poz>=0&&poz<n; } int solve(int _N,int* Left,int* Right) { n=_N; for(int i=0;i<n;i++) { Left[i]=-1; Right[i]=-1; } vector<int> parent(n); fill(parent.begin(),parent.end(),-1); for(int i=0;i<n;i++) { if(inside(i-1)&&parent[i]==-1) { if(levo(i)) { int tr=i-1; while(parent[tr]!=-1) tr=parent[tr]; int l=tr,r=i-1; while(l<r) { int m=(l+r)>>1; if(query(i,i,m,i)) { r=m; } else { l=m+1; } } parent[i]=parent[l]; Right[parent[i]]=i; Left[i]=l; parent[l]=i; } } if(inside(i+1)) { if(desno(i)) { assert(parent[i+1]==-1); parent[i+1]=i; Right[i]=i+1; } } /* printf("Left:\n"); for(int i=0;i<n;i++) { printf("%i ",Left[i]); } printf("\nRight:\n"); for(int i=0;i<n;i++) { printf("%i ",Right[i]); } printf("\n");*/ } for(int i=0;i<n;i++) { if(parent[i]==-1) return i; } //assert(0); /*printf("Left:\n"); for(int i=0;i<n;i++) { printf("%i ",Left[i]); } printf("\nRight:\n"); for(int i=0;i<n;i++) { printf("%i ",Right[i]); }*/ }

Compilation message (stderr)

popa.cpp: In function 'int solve(int, int*, int*)':
popa.cpp:103:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...