# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
316133 | 2020-10-25T11:39:28 Z | georgerapeanu | Tenis (COCI20_tenis) | C++11 | 87 ms | 4860 KB |
#include <bits/stdc++.h> using namespace std; const int NMAX = 100005; int n; int ran[3][NMAX + 5]; int pos[3][NMAX + 5]; long long ans[3]; int appeared[NMAX + 5]; int fr[1 << 3]; int wh[NMAX + 5]; int wins[NMAX + 5]; int get_best(int a,int b){ pair<pair<int,int>,int> bst = {{1e9,1e9},1e9}; for(int h = 0;h < 3;h++){ pair<pair<int,int>,int> tmp = {{min(pos[h][a],pos[h][b]),max(pos[h][a],pos[h][b])},h}; bst = min(bst,tmp); } return bst.second; } int get_winner(int a,int b){ pair<pair<int,int>,int> bst = {{1e9,1e9},1e9}; for(int h = 0;h < 3;h++){ pair<pair<int,int>,int> tmp = {{min(pos[h][a],pos[h][b]),max(pos[h][a],pos[h][b])},h}; bst = min(bst,tmp); } return ran[bst.second][bst.first.first]; } int bonus[NMAX + 5]; int main(){ scanf("%d",&n); for(int h = 0;h <= 2;h++){ for(int i = 1;i <= n;i++){ scanf("%d",&ran[h][i]); pos[h][ran[h][i]] = i; } } for(int i = 1;i <= n;i++){ vector<int> noi; for(int h = 0;h <= 2;h++){ if(wh[ran[h][i]] == 0 || wh[ran[h][i]] == i){ if(wh[ran[h][i]] == 0){ noi.push_back(ran[h][i]); wh[ran[h][i]] = i; } appeared[ran[h][i]] |= 1 << h; } } for(auto it:noi){ for(int conf = 0;conf < (1 << 3);conf++){ int tmp = conf & appeared[it]; int lowest_common_bit = 0; for(int i = 0;i < 3;i++){ if((conf >> i) & 1){ lowest_common_bit = i; break; } } for(int i = 0;i < 3;i++){ if((tmp >> i) & 1){ lowest_common_bit = i; break; } } ans[lowest_common_bit] += fr[conf]; } } for(auto it:noi){ fr[appeared[it]]++; } for(int i = 0;i < (int)noi.size();i++){ for(int j = i + 1;j < (int)noi.size();j++){ ans[get_best(noi[i],noi[j])]++; wins[get_winner(noi[i],noi[j])]++; } } bonus[i - 1] += (int)noi.size(); } for(int i = n;i >= 0;i--){ bonus[i] += bonus[i + 1]; } for(int i = 1;i <= n;i++){ wins[i] += bonus[wh[i]]; } for(int i = 0;i < 3;i++)printf("%lld ",ans[i]);printf("\n"); for(int i = 1;i <= n;i++)printf("%d ",wins[i]);printf("\n"); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 384 KB | Output is correct |
2 | Correct | 0 ms | 384 KB | Output is correct |
3 | Partially correct | 1 ms | 384 KB | Partially correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 384 KB | Output is correct |
2 | Correct | 0 ms | 384 KB | Output is correct |
3 | Partially correct | 1 ms | 384 KB | Partially correct |
4 | Correct | 3 ms | 512 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 384 KB | Output is correct |
2 | Correct | 0 ms | 384 KB | Output is correct |
3 | Partially correct | 1 ms | 384 KB | Partially correct |
4 | Correct | 3 ms | 512 KB | Output is correct |
5 | Partially correct | 30 ms | 2184 KB | Partially correct |
6 | Correct | 45 ms | 3012 KB | Output is correct |
7 | Partially correct | 61 ms | 3960 KB | Partially correct |
8 | Partially correct | 79 ms | 4856 KB | Partially correct |
9 | Partially correct | 87 ms | 4856 KB | Partially correct |
10 | Partially correct | 73 ms | 4860 KB | Partially correct |