답안 #143938

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
143938 2019-08-15T13:17:26 Z Bodo171 Rectangles (IOI19_rect) C++14
10 / 100
12 ms 460 KB
#include "rect.h"
#include <vector>
#include <iostream>
using namespace std;
vector<vector<int> > a,sum,secvl,secvc;
int n,m,i,j,mx;
int solve_n_mic()
{
    int ans=0;
    if(n<=2) return 0;
    for(i=1;i<=m-2;i++)
    {
        bool bun=(a[1][i]<a[1][i-1]&&a[1][i]<a[0][i]&&a[1][i]<a[2][i]);
        mx=a[1][i];
        for(j=i;j<=m-2;j++)
        {
            bun&=(a[1][j]<a[0][j]&&a[1][j]<a[2][j]);
            mx=max(mx,a[1][j]);
            if(bun&&mx<a[1][i-1]&&mx<a[1][j+1])
                ans++;
        }
    }
    return ans;
}
int S(int xl,int yl,int xr,int yr)
{
    int ret=sum[xr][yr];
    if(xl) ret-=sum[xl-1][yr];
    if(yl) ret-=sum[xr][yl-1];
    if(xl&&yl) ret+=sum[xl-1][yl-1];
    return ret;
}
int solve01()
{
    int ans=0;
    sum=a;secvl=a;secvc=a;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            if(i) sum[i][j]+=sum[i-1][j];
            if(j) sum[i][j]+=sum[i][j-1];
            if(i&&j) sum[i][j]-=sum[i-1][j-1];
            secvl[i][j]=secvc[i][j]=0;
        }
    }
    int L,C;
    for(i=1;i<n-1;i++)
    {
        for(j=1;j<m-1;j++)
        {
            if(a[i][j]==0)
                secvl[i][j]=secvl[i-1][j]+1;
            if(a[i][j]==0)
                secvc[i][j]=secvc[i][j-1]+1;
            L=secvl[i][j];C=secvc[i][j];
            if(a[i][j]==0&&S(i-L+1,j-C+1,i,j)==0&&S(i-L,j-C,i+1,j+1)==2*(L+C+4)-4)
                ans++;
        }
    }
    return ans;
}
long long count_rectangles(vector<vector<int> > att) {
    a=att;
    n=a.size();m=a[0].size();
    int M=0;
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
          M=max(M,a[i][j]);
    if(n<=3)
      return solve_n_mic();
    if(M<=1)
        return solve01();
	return 1;
}

Compilation message

rect.cpp: In function 'long long int count_rectangles(std::vector<std::vector<int> >)':
rect.cpp:72:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
     if(M<=1)
     ^~
rect.cpp:74:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
  return 1;
  ^~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 12 ms 376 KB Output is correct
2 Correct 9 ms 436 KB Output is correct
3 Correct 9 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 11 ms 352 KB Output is correct
6 Correct 11 ms 348 KB Output is correct
7 Correct 10 ms 376 KB Output is correct
8 Correct 10 ms 460 KB Output is correct
9 Correct 10 ms 452 KB Output is correct
10 Correct 2 ms 376 KB Output is correct
11 Correct 2 ms 368 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -