Submission #1135885

#TimeUsernameProblemLanguageResultExecution timeMemory
1135885vibeduckSeats (IOI18_seats)C++20
11 / 100
908 ms16772 KiB
#include "seats.h"
#include <bits/stdc++.h> 
using namespace std;

#define pb push_back
#define pf push_front
#define mp make_pair
#define fi first
#define se second
//#define int long long
#define all(x) (x).begin(), (x).end()

typedef long double ld;
typedef long long ll;
typedef pair<ll,ll> pll;
typedef pair<int,int> pii;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<bool> vb;
typedef vector<vector<int>> vvi;
typedef vector<vector<bool>> vvb;
typedef vector<vector<ll>> vvll;
typedef vector<string> vs;
typedef vector<vector<string>> vvs;
typedef vector<char> vc;
typedef vector<vector<char>> vvc;
typedef map<int, int> mii;
typedef unordered_map<int, int> umii;

int H, W;
const int mxh = 1e4, mxw = 1e4;
pii pos[10000];

void give_initial_chart(int H1, int W1, vi R, vi C) {
    H = H1; W = W1;
    for (int i = 0; i < H * W; i++) {
        pos[i] = {R[i], C[i]};
    }
}

int swap_seats(int a, int b) {
    swap(pos[a], pos[b]);
    pii tl = {1e18, 1e18}, br = {-1e18, -1e18};
    int ans = 0;
    for (int s = 0; s < H * W; s++) {
        tl.fi = min(tl.fi, pos[s].fi);
        tl.se = min(tl.se, pos[s].se);
        br.fi = max(br.fi, pos[s].fi);
        br.se = max(br.se, pos[s].se);
        ans += ((br.fi - tl.fi + 1) * (br.se - tl.se + 1) == (s + 1));
    }
    return ans;
}
#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...