Submission #366488

#TimeUsernameProblemLanguageResultExecution timeMemory
366488kartelTenis (COCI20_tenis)C++14
50 / 110
120 ms492 KiB
#include <bits/stdc++.h> #define in(x) freopen(x, "r", stdin) #define out(x) freopen(x, "w", stdout) //#include <ext/pb_ds/assoc_container.hpp> //#include <ext/pb_ds/tree_policy.hpp> //#pragma GCC optimize("Ofast") //#pragma GCC optimize("unroll-loops") //#pragma GCC optimize("-O3") #define F first #define S second #define pb push_back #define M ll(1e9 + 7) #define sz(x) (int)x.size() #define re return #define oo ll(1e18) #define el '\n' #define pii pair <int, int> #define all(x) (x).begin(), (x).end() #define arr_all(x, n) (x + 1), (x + 1 + n) #define vi vector<int> #define eps (ld)1e-6 using namespace std; //using namespace __gnu_pbds; //typedef tree <int, null_type, less_equal <int> , rb_tree_tag, tree_order_statistics_node_update> ordered_set; typedef long long ll; typedef long double ld; typedef unsigned long long ull; typedef short int si; const int N = 3e3 + 50; int ans[N], cnt[4], ps[N][3], n; int a[3][N]; int main() { // srand(time(0)); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // in("turtle.in"); // out("turtle.out"); // inf("input.txt"); // out("output.txt"); cin >> n; for (int i = 0; i < 3; i++) { for (int j = 1; j <= n; j++) { cin >> a[i][j]; ps[a[i][j]][i] = j; } } for (int i = 1; i <= n; i++) for (int j = i + 1; j <= n; j++) { int mn = 1e9; for (int k = 0; k < 3; k++) mn = min(mn, min(ps[i][k], ps[j][k])); int cnt1 = 0, last; for (int k = 0; k < 3; k++) { if (ps[i][k] == mn || ps[j][k] == mn) cnt1++, last = k; } if (cnt1 == 1) { cnt[last]++; ans[i] += (ps[i][last] < ps[j][last]); ans[j] += (ps[j][last] < ps[i][last]); continue; } int mn1 = 1e9; for (int k = 0; k < 3; k++) { if (ps[i][k] == mn && ps[i][k] < ps[j][k]) mn1 = min(mn1, ps[j][k]); else if (ps[j][k] == mn && ps[j][k] < ps[i][k]) mn1 = min(mn1, ps[i][k]); } for (int k = 0; k < 3; k++) { if (ps[i][k] == mn && ps[i][k] < ps[j][k]) { if (ps[j][k] == mn1) { cnt[k]++; ans[i]++; break; } } else if (ps[j][k] == mn && ps[j][k] < ps[i][k]) { if (ps[i][k] == mn1) { cnt[k]++; ans[j]++; break; } } } } for (int i = 0; i < 3; i++) cout << cnt[i] << " "; cout << el; for (int i = 1; i <= n; i++) { cout << ans[i] << " "; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...