제출 #967677

#제출 시각아이디문제언어결과실행 시간메모리
967677parlimoosNaan (JOI19_naan)C++14
29 / 100
286 ms57848 KiB
//Be Name KHODA #pragma GCC optimize("Ofast") #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define pb push_back #define pp pop_back #define lb lower_bound #define ub upper_bound #define arr(x) array<ll , x> #define endl '\n' ll n , l; ll mat[2000][2000]; vector<arr(2)> pts[2000] , o; vector<int> ord; bool use[2000]; bool cmpKsr(arr(2) &a , arr(2) &b){ return ((a[0] * b[1]) < (a[1] * b[0])); } int main(){ ios::sync_with_stdio(0); cin.tie(0); cin >> n >> l; for(int i = 0 ; i < n ; i++){ for(int j = 0 ; j < l ; j++){ cin >> mat[i][j]; mat[i][j] *= n; } } for(int i = 0 ; i < n ; i++){ ll sm = 0 , now = 0; for(int j = 0 ; j < l ; j++) sm += mat[i][j]; sm /= n; ll tn = 1; for(int j = 0 ; j < l ; j++){ while(now + (mat[i][j]) >= (tn * sm)){ arr(2) d = {0 , 0}; d[0] = ((tn * sm) - now) , d[1] = mat[i][j]; ll g = __gcd(d[0] , d[1]); d[0] /= g , d[1] /= g; d[0] += (1ll * j) * d[1]; pts[i].pb(d) , tn++; } now += mat[i][j]; } } for(int i = 0 ; i < n ; i++){ for(int j = 1 ; j < n ; j++) if(cmpKsr(pts[i][j] , pts[i][j - 1])) exit(0); } for(int i = 0 ; i < n ; i++){ arr(2) pt = {-1 , -1}; int inx = -1; for(int j = 0 ; j < n ; j++){ if(use[j]) continue; if(pt[0] == -1 or cmpKsr(pts[j][i] , pt)) pt = pts[j][i] , inx = j; } o.pb(pt) , use[inx] = 1 , ord.pb(inx); } for(int i = 1 ; i < n ; i++) cout << o[i - 1][0] << " " << o[i - 1][1] << endl; for(int i = 0 ; i < n ; i++) cout << ord[i] + 1 << " "; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...