結果
| 問題 |
No.5020 Averaging
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2024-02-25 15:11:10 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 3 ms / 1,000 ms |
| コード長 | 1,761 bytes |
| コンパイル時間 | 2,915 ms |
| コンパイル使用メモリ | 251,464 KB |
| 実行使用メモリ | 6,676 KB |
| スコア | 21,702,023 |
| 最終ジャッジ日時 | 2024-02-25 15:11:15 |
| 合計ジャッジ時間 | 4,543 ms |
|
ジャッジサーバーID (参考情報) |
judge10 / judge13 |
| 純コード判定しない問題か言語 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 50 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
struct card{
ll a,b;
card(){}
card(ll a,ll b):a(a),b(b){}
void print(){
cout<<a<<" "<<b<<endl;
}
};
bool operator<(card x,card y){
if(x.a==y.a)return x.b<y.b;
else return x.a<y.a;
}
card operator+(card x,card y){
return card((x.a+y.a)/2,(x.b+y.b)/2);
}
const int m=6;
const vector<int> v={15,12,10,7,5,1};
const ll x=500000000000000000;
ll solver(int n,vector<card> c){
auto f=[&](int p){
card t=c[p]+c[(p+1)%n];
int index=(p+1)%n;
for(int j=2;j<n;j++){
card tt=c[p]+c[(p+j)%n];
if(max(abs(t.a-x),abs(t.b-x))>max(abs(tt.a-x),abs(tt.b-x))){
index=(p+j)%n;
t=tt;
}
}
c[p]=t;
c[index]=t;
cout<<p+1;
cout<<" ";
cout<<index+1<<endl;
};
for(int i=0;i<m;i++){
for(int j=0;j<v[i];j++){
f(j);
}
}
return max(abs(c[0].a-x),abs(c[0].b-x));
}
int main(){
int n;
cin>>n;
vector<card> c(n);
random_device seed;
mt19937 rnd(seed());
for(int i=0;i<n;i++){
ll a,b;
cin>>a>>b;
c[i]=card(a,b);
}
cout<<50<<endl;
auto f=[&](int p){
card t=c[p]+c[(p+1)%n];
int index=(p+1)%n;
for(int j=2;j<n;j++){
card tt=c[p]+c[(p+j)%n];
if(max(abs(t.a-x),abs(t.b-x))>max(abs(tt.a-x),abs(tt.b-x))){
index=(p+j)%n;
t=tt;
}
}
c[p]=t;
c[index]=t;
cout<<p+1;
cout<<" ";
cout<<index+1<<endl;
};
for(int i=0;i<m;i++){
for(int j=0;j<v[i];j++){
f(j);
}
}
}