Submission #164155

#TimeUsernameProblemLanguageResultExecution timeMemory
164155kostia244Wall (IOI14_wall)C++17
32 / 100
1135 ms28804 KiB
#include "wall.h" #include<bits/stdc++.h> #define all(x) x.begin(), x.end() #define pb push_back using namespace std; void buildWall(int n, int k, int op[], int l[], int r[], int h[], int fh[]){ if(n <= 10000) { for(int i = 0; i < k; i++) { if(op[i]==1) { for(int p = l[i]; p <= r[i]; p++) if(fh[p]<h[i]) fh[p] = h[i]; } else { for(int p = l[i]; p <= r[i]; p++) if(fh[p]>h[i]) fh[p] = h[i]; } } return; } vector<pair<int, int>> o[2][2]; for(int i = 0; i < k; i++) { o[op[i]-1][0].pb({l[i], h[i]}); o[op[i]-1][1].pb({r[i]+1, h[i]}); } for(int i = 0; i < 2; i++) for(int j = 0; j < 2; j++) sort(all(o[i][j])); int xa, xb, ya, yb; xa=xb=ya=yb=0; multiset<int, greater<int>> x; multiset<int> y; for(int i = 0; i < n; i++) { while(xa<o[0][0].size()&&o[0][0][xa].first==i) { x.insert(o[0][0][xa].second); xa++; } while(xb<o[0][1].size()&&o[0][1][xb].first==i) { x.erase(x.find(o[0][1][xb].second)); xb++; } while(ya<o[1][0].size()&&o[1][0][ya].first==i) { y.insert(o[1][0][ya].second); ya++; } while(yb<o[1][1].size()&&o[1][1][yb].first==i) { y.erase(y.find(o[1][1][yb].second)); yb++; } fh[i] = min(x.empty()?0:*x.begin(), y.empty()?INT_MAX:*y.begin()); } return; }

Compilation message (stderr)

wall.cpp: In function 'void buildWall(int, int, int*, int*, int*, int*, int*)':
wall.cpp:30:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(xa<o[0][0].size()&&o[0][0][xa].first==i) {
         ~~^~~~~~~~~~~~~~~
wall.cpp:34:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(xb<o[0][1].size()&&o[0][1][xb].first==i) {
         ~~^~~~~~~~~~~~~~~
wall.cpp:38:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(ya<o[1][0].size()&&o[1][0][ya].first==i) {
         ~~^~~~~~~~~~~~~~~
wall.cpp:42:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(yb<o[1][1].size()&&o[1][1][yb].first==i) {
         ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...