Submission #1055740

# Submission time Handle Problem Language Result Execution time Memory
1055740 2024-08-13T04:43:07 Z pan Topovi (COCI15_topovi) C++17
120 / 120
297 ms 38704 KB
#include <bits/stdc++.h>
//#include "bits_stdc++.h"
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
#define endl '\n'
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define lb lower_bound
#define ub upper_bound
#define input(x) scanf("%lld", &x);
#define input2(x, y) scanf("%lld%lld", &x, &y);
#define input3(x, y, z) scanf("%lld%lld%lld", &x, &y, &z);
#define input4(x, y, z, a) scanf("%lld%lld%lld%lld", &x, &y, &z, &a);
#define print(x, y) printf("%lld%c", x, y);
#define show(x) cerr << #x << " is " << x << endl;
#define show2(x,y) cerr << #x << " is " << x << " " << #y << " is " << y << endl;
#define show3(x,y,z) cerr << #x << " is " << x << " " << #y << " is " << y << " " << #z << " is " << z << endl;
#define all(x) x.begin(), x.end()
#define discretize(x) sort(x.begin(), x.end()); x.erase(unique(x.begin(), x.end()), x.end());
#define FOR(i, x, n) for (ll i =x; i<=n; ++i) 
#define RFOR(i, x, n) for (ll i =x; i>=n; --i) 
using namespace std;
//using namespace __gnu_pbds;
//#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
//#define ordered_multiset tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update>
typedef long long ll;
typedef long double ld;
typedef pair<ld, ll> pd;
typedef pair<string, ll> psl;
typedef pair<ll, ll> pi;
typedef pair<ll, pi> pii;
typedef pair<pi, pi> piii;
 
ll ans = 0;
 
map<pi, ll>  val;
unordered_map<ll, ll> zorx, zory, freq1, freq2;
 
void insert(ll x, ll y, ll k)
{
	ans += freq1[zorx[x]]*freq2[zorx[x]];
	if (zory[y]!=zorx[x]) ans += freq1[zory[y]]*freq2[zory[y]];
	freq1[zorx[x]]--; freq2[zory[y]]--;
	ans -= freq1[zorx[x]]*freq2[zorx[x]];
	if (zory[y]!=zorx[x]) ans -= freq1[zory[y]]*freq2[zory[y]];
	zorx[x]^=k;
	zory[y]^=k;
	ans += freq1[zorx[x]]*freq2[zorx[x]];
	if (zory[y]!=zorx[x]) ans += freq1[zory[y]]*freq2[zory[y]];
	freq1[zorx[x]]++; freq2[zory[y]]++;
	ans -= freq1[zorx[x]]*freq2[zorx[x]];
	if (zory[y]!=zorx[x]) ans -= freq1[zory[y]]*freq2[zory[y]];
}
 
 
int main()
{
	ll n, k,p, r, c,  x, r2, c2;
	input3(n, k, p);
	freq1[0] = freq2[0] = n;
	for (ll i=0; i<k; ++i)
	{
		input3(r, c, x);
		insert(r, c, x);
		val[mp(r, c)] = x;
		//show(ans);
		//show2(freq1[0], freq2[0]);
		//show2(freq1[1], freq2[1]);
	}
	for (ll i=0; i<p; ++i)
	{
		input4(r, c, r2, c2);
		insert(r, c, val[mp(r,c)]);
		insert(r2, c2, val[mp(r,c)]);
		val[mp(r2, c2)] = val[mp(r,c)];
		val[mp(r, c)] = 0;
		print(ans, '\n');
		//show2(freq1[0], freq2[0]);
		//show2(freq1[1], freq2[1]);
		//show2(freq1[2], freq2[2]);
	}
	
	
	return 0;
}
 

Compilation message

topovi.cpp: In function 'int main()':
topovi.cpp:14:30: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 | #define input3(x, y, z) scanf("%lld%lld%lld", &x, &y, &z);
      |                         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
topovi.cpp:61:2: note: in expansion of macro 'input3'
   61 |  input3(n, k, p);
      |  ^~~~~~
topovi.cpp:14:30: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 | #define input3(x, y, z) scanf("%lld%lld%lld", &x, &y, &z);
      |                         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
topovi.cpp:65:3: note: in expansion of macro 'input3'
   65 |   input3(r, c, x);
      |   ^~~~~~
topovi.cpp:15:33: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 | #define input4(x, y, z, a) scanf("%lld%lld%lld%lld", &x, &y, &z, &a);
      |                            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
topovi.cpp:74:3: note: in expansion of macro 'input4'
   74 |   input4(r, c, r2, c2);
      |   ^~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 33 ms 4996 KB Output is correct
7 Correct 26 ms 4628 KB Output is correct
8 Correct 21 ms 3892 KB Output is correct
9 Correct 22 ms 4116 KB Output is correct
10 Correct 25 ms 4096 KB Output is correct
11 Correct 282 ms 38564 KB Output is correct
12 Correct 273 ms 38640 KB Output is correct
13 Correct 268 ms 38572 KB Output is correct
14 Correct 297 ms 38560 KB Output is correct
15 Correct 284 ms 38560 KB Output is correct
16 Correct 283 ms 38556 KB Output is correct
17 Correct 261 ms 38696 KB Output is correct
18 Correct 293 ms 38568 KB Output is correct
19 Correct 263 ms 38704 KB Output is correct
20 Correct 270 ms 38564 KB Output is correct