Submission #219396

# Submission time Handle Problem Language Result Execution time Memory
219396 2020-04-05T08:45:59 Z Haunted_Cpp Topovi (COCI15_topovi) C++17
0 / 120
2000 ms 20908 KB
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <set>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <queue>
#include <cassert>
#include <string>
#include <cstring>
#include <bitset>
#include <random>
#include <chrono>
#include <iomanip>

/*
#pragma GCC optimize ("Ofast")
#pragma GCC target("fma,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,avx2,tune=native")
#pragma GCC optimize("unroll-loops")
*/

#define FOR(i, a, b) for(int i = a; i < (int) b; i++)
#define F0R(i, a) FOR (i, 0, a)
#define ROF(i, a, b) for(int i = a; i >= (int) b; i--)
#define R0F(i, a) ROF(i, a, 0)
#define GO(i, a) for (auto i : a)
 
#define rsz resize
#define eb emplace_back
#define pb push_back
#define sz(x) (int) x.size()
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define f first
#define s second
 
using namespace std;
 
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<pii> vpii;
typedef vector<vi> vvi;
typedef vector<vpii> vvpii;
typedef long long i64;
typedef vector<i64> vi64;
typedef vector<vi64> vvi64;
typedef pair<i64, i64> pi64;
typedef vector<pi64> vpi64;
 
const int dr[] = {+1, -1, +0, +0, +1, -1, +1, -1};
const int dc[] = {+0, +0, +1, -1, +1, -1, -1, +1};
const int ms[] = {+31, +29, +31, 30, +31, +30, +31, +31, +30, +31, +30, +31};

map<int, int> current_row;
map<int, int> current_column;
map<int, int> linha_xor;
map<int, int> coluna_xor;
map<pii, int> torres;

int main () {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, t, q;
  cin >> n >> t >> q;
  i64 total = 1LL * n * n;
  F0R (i, t) {
    int linha, coluna, valor;
    cin >> linha >> coluna >> valor;
    torres[{linha, coluna}] = valor;

    if (linha_xor[current_row[linha]] > 0) --linha_xor[current_row[linha]];
    current_row[linha] ^= valor;
    ++linha_xor[current_row[linha]];
    
    if (coluna_xor[current_column[coluna]] > 0) --coluna_xor[current_column[coluna]];
    current_column[coluna] ^= valor;
    ++coluna_xor[current_column[coluna]];
  }
  
  

  while (q--) {
    int l1, c1, l2, c2;
    cin >> l1 >> c1 >> l2 >> c2;
    // Remover
    if (linha_xor[current_row[l1]] > 0) --linha_xor[current_row[l1]]; 
    current_row[l1] ^= torres[{l1, c1}];
    ++linha_xor[current_row[l1]];
    
    if (coluna_xor[current_column[c1]] > 0) --coluna_xor[current_column[c1]];
    current_column[c1] ^= torres[{l1, c1}];
    ++coluna_xor[current_column[c1]];
    
    // Adicionar
    if (linha_xor[current_row[l2]] > 0) --linha_xor[current_row[l2]]; 
    current_row[l2] ^= torres[{l1, c1}];
    ++linha_xor[current_row[l2]];
    
    if (coluna_xor[current_column[c2]] > 0) --coluna_xor[current_column[c2]];
    current_column[c2] ^= torres[{l1, c1}];
    ++coluna_xor[current_column[c2]];
    
    swap (torres[{l1, c1}], torres[{l2, c2}]);
    
    // Do not forget not attacked cells ! Both Row and Column empty
    i64 not_attacked = 0;
    GO (to, linha_xor) {
      int valor = to.f;
      int primeiro = to.s;
      int segundo = coluna_xor[valor];
      not_attacked += 1LL * primeiro * segundo;
    }
    // Both empty
    not_attacked += 1LL * (n - sz(current_row)) * (n - sz(current_column));
    cout << total - not_attacked << '\n';
    
    
    
  }
  return 0;
}
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 384 KB Output isn't correct
2 Incorrect 5 ms 384 KB Output isn't correct
3 Incorrect 5 ms 384 KB Output isn't correct
4 Incorrect 5 ms 384 KB Output isn't correct
5 Incorrect 5 ms 384 KB Output isn't correct
6 Incorrect 260 ms 6136 KB Output isn't correct
7 Incorrect 266 ms 5496 KB Output isn't correct
8 Incorrect 163 ms 4476 KB Output isn't correct
9 Incorrect 179 ms 4516 KB Output isn't correct
10 Incorrect 204 ms 4984 KB Output isn't correct
11 Execution timed out 2087 ms 20908 KB Time limit exceeded
12 Execution timed out 2089 ms 20484 KB Time limit exceeded
13 Execution timed out 2066 ms 20628 KB Time limit exceeded
14 Execution timed out 2089 ms 20396 KB Time limit exceeded
15 Execution timed out 2076 ms 20552 KB Time limit exceeded
16 Execution timed out 2089 ms 20404 KB Time limit exceeded
17 Execution timed out 2037 ms 20688 KB Time limit exceeded
18 Execution timed out 2087 ms 20568 KB Time limit exceeded
19 Execution timed out 2085 ms 20736 KB Time limit exceeded
20 Execution timed out 2090 ms 20600 KB Time limit exceeded