Submission #154444

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
1544442019-09-21 21:32:15DormiRectangles (IOI19_rect)C++14
100 / 100
4539 ms736340 KiB
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> pii;
const int MAXN=2500;
int bit[MAXN+1];
int n,m;
vector<pii> rowranges[MAXN][MAXN];
vector<pii> colranges[MAXN][MAXN];
int preloc[MAXN];
int sufloc[MAXN];
pii deq[MAXN];
inline void update(int loc, int val){
for(;loc<=n;loc+=loc&-loc)bit[loc]+=val;
}
inline int sum(int loc){
int ans=0;
for(;loc>0;loc-=loc&-loc)ans+=bit[loc];
return ans;
}
long long count_rectangles(std::vector<std::vector<int>> a){
n=a.size();
m=a[0].size();
for(int i=0;i<n;i++){
int l=0,r=-1;
for(int j=m-1;j>=0;j--){
while(r>=l&&deq[r].second<=a[i][j])r--;
if(r>=l)sufloc[j]=deq[r].first;
else sufloc[j]=-1;
deq[++r]={j,a[i][j]};
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Compilation message (stderr)

rect.cpp: In function 'long long int count_rectangles(std::vector<std::vector<int> >)':
rect.cpp:66:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    while(l<rowranges[j][i].size()&&r<rowranges[j+1][i].size()){
          ~^~~~~~~~~~~~~~~~~~~~~~~
rect.cpp:66:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    while(l<rowranges[j][i].size()&&r<rowranges[j+1][i].size()){
                                    ~^~~~~~~~~~~~~~~~~~~~~~~~~
rect.cpp:81:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    while(l<colranges[i][j].size()&&r<colranges[i][j+1].size()){
          ~^~~~~~~~~~~~~~~~~~~~~~~
rect.cpp:81:37: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    while(l<colranges[i][j].size()&&r<colranges[i][j+1].size()){
                                    ~^~~~~~~~~~~~~~~~~~~~~~~~~
rect.cpp:107:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int k=r;k<colranges[i][j].size();k++)update(colranges[i][j][k].first+1,-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...