# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
379050 | urd05 | Naan (JOI19_naan) | C++14 | 58 ms | 11116 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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*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);
}
}
컴파일 시 표준 에러 (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... |