Submission #418968

#TimeUsernameProblemLanguageResultExecution timeMemory
418968jacquesamselRectangles (IOI19_rect)C++14
0 / 100
8 ms460 KiB
#include <bits/stdc++.h>
using namespace std;
#define vvint vector<vector<int>>

void print_vvint(vector<vector<int>>& grid) {
    for (int i = 0; i < grid.size(); i++) {
        for (int j = 0; j < grid[i].size(); j++) {
            cout << grid[i][j] << " ";
        }
        cout << endl;
    }
}

long long sumUp(int x) {
    long long accumulator = 0;
    for (int i = 1; i <= x; i++) {
        accumulator += i;
    }
    return accumulator;
}

bool is_valid_vert(vvint& grid, int pos) {
    return min(grid[0][pos], grid[2][pos]) > grid[1][pos];
}

bool is_valid_horiz(vvint& grid, int lpos, int rpos, int maxStretch) {
    return min(grid[1][lpos-1], grid[1][rpos+1]) > maxStretch;
}

bool can_add(vvint& grid, int rightPos, int maxRow) {
    maxRow = max(maxRow, grid[1][rightPos+1]);
    if (grid[1][rightPos+1] <= maxRow) return false;
    if (max(grid[0][rightPos], grid[2][rightPos]) <= grid[1][rightPos]) return false;
    return true;
}

long long count_rectangles(vector<vector<int>> a) {
    int n = a.size();
    int m = a[0].size();
    long long accumulator = 0;
    if (a[0].size() < 3) {
        return 0;
    }
    // cout << is_valid(a, 2) << endl;
    int maxRow = a[1][1];
    for (int leftPos = 1; leftPos < m-1; leftPos++) {
        int maxStretch = INT32_MIN;
        for (int rightPos = leftPos; rightPos < m-1; rightPos++) {
            if (!is_valid_vert(a, rightPos)) break;
            maxStretch = max(maxStretch, a[1][rightPos]);
            if (is_valid_horiz(a, leftPos, rightPos, maxStretch)) {
                accumulator++;
                // cout << "FOUND FROM " << leftPos << " TO " << rightPos << endl;
            };
        }
    }
    return accumulator;
}

Compilation message (stderr)

rect.cpp: In function 'void print_vvint(std::vector<std::vector<int> >&)':
rect.cpp:6:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    6 |     for (int i = 0; i < grid.size(); i++) {
      |                     ~~^~~~~~~~~~~~~
rect.cpp:7:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 |         for (int j = 0; j < grid[i].size(); j++) {
      |                         ~~^~~~~~~~~~~~~~~~
rect.cpp: In function 'long long int count_rectangles(std::vector<std::vector<int> >)':
rect.cpp:38:9: warning: unused variable 'n' [-Wunused-variable]
   38 |     int n = a.size();
      |         ^
rect.cpp:45:9: warning: unused variable 'maxRow' [-Wunused-variable]
   45 |     int maxRow = a[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...