# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
379063 | urd05 | Naan (JOI19_naan) | C++14 | 763 ms | 100844 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int arr[2000][2000];
typedef pair<long long,long long> P; //first/second
typedef pair<P,int> Pi;
bool used[2000];
bool comp(Pi a,Pi b) {
return (__int128)a.first.first*b.first.second<(__int128)b.first.first*a.first.second;
}
P save[2000][2000];
int main(void) {
int n,l;
scanf("%d %d",&n,&l);
for(int i=0;i<n;i++) {
for(int j=0;j<l;j++) {
scanf("%d",&arr[i][j]);
}
}
for(int i=0;i<n;i++) {
int ind=1;
long long sum=0;
for(int j=0;j<l;j++) {
sum+=arr[i][j];
}
long long temp=0;
for(int j=0;j<l;j++) {
while (ind<n&&(temp+arr[i][j])*n>=sum*ind) {
save[i][ind]=P(sum*ind-n*temp+j*1LL*n*arr[i][j],n*arr[i][j]);
ind++;
}
temp+=arr[i][j];
}
}
vector<P> ret;
vector<int> v;
for(int cnt=n-1;cnt>0;cnt--) {
vector<Pi> vec;
for(int i=0;i<n;i++) {
if (!used[i]) {
vec.push_back(Pi(save[i][cnt],i));
}
}
sort(vec.begin(),vec.end(),comp);
reverse(vec.begin(),vec.end());
used[vec[0].second]=true;
v.push_back(vec[0].second);
ret.push_back(vec[0].first);
}
reverse(ret.begin(),ret.end());
for(int i=0;i<n;i++) {
if (!used[i]) {
v.push_back(i);
}
}
reverse(v.begin(),v.end());
for(int i=0;i<ret.size();i++) {
printf("%lld %lld\n",ret[i].first,ret[i].second);
}
for(int i=0;i<v.size();i++) {
printf("%d ",v[i]+1);
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |