// Code by Parsa Eslami
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,O3")
#define int long long
#define pii pair<int,int>
#define bit(i,j) ((j>>i)&1)
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define FORR(i,a,b) for(int i=a;i>=b;i--)
#define S second
#define F first
#define pb push_back
#define SZ(x) (int)x.size()
#define all(x) x.begin(),x.end()
#define err(x) cout<<#x<<": "<<x<<'\n';
using namespace std;
pii simp(pii X){
int gc=__gcd(X.F,X.S);
X.S/=gc;
X.F/=gc;
return X;
}
pii sum(pii a,pii b){// a+b
a=simp(a);
b=simp(b);
pii rt;
int gc=__gcd(a.S,b.S);
rt.S=a.S*b.S/gc;
rt.F=a.F*(b.S/gc)+b.F*(a.S/gc);
rt=simp(rt);
return rt;
}
pii mul(pii a,pii b){// a*b
a=simp(a);
b=simp(b);
pii rt;
rt.F=a.F*b.F;
rt.S=a.S*b.S;
rt=simp(rt);
return rt;
}
pii L(pii a,pii b){// a-b
b.F=-b.F;
return sum(a,b);
}
pii div(pii a,pii b){// a/b
swap(b.F,b.S);
return mul(a,b);
}
bool cmp(pii a,pii b){// a<=b
a=simp(a);
b=simp(b);
return (a.F*b.S<=a.S*b.F);
}
int32_t main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int n,l; cin>>n>>l;
int v[n+1][l+1];
FOR(i,1,n) FOR(j,1,l) cin>>v[i][j];
pii a[n][n];
FOR(i,1,n){
pii point={0,1};//
pii S={0,1};//
int ind=1;//
int Sp=0;
FOR(j,1,l) Sp+=v[i][j];
pii targ={Sp,n};
FOR(j,1,n-1){
while(1){
point=simp(point);
S=simp(S);
pii l=div(L(targ,S),{v[i][ind],1});
if(cmp(sum(l,point),{1,1})){
a[i][j]=sum({ind-1,1},sum(l,point));
point=sum(l,point);
S={0,1};
if(point.F==point.S){
ind++;
point={0,1};
}
break;
}else{
S=sum(S,mul(L({1,1},point),{v[i][ind],1}));
ind++; point={0,1};
}
}
}
}
bool mark[n+1]={};
int p[n+1]={};
FOR(i,1,n-1){
pair<pii,int> ans={{1e9,1},-1};
FOR(j,1,n) if(!mark[j]){
pair<pii,int> x0={a[j][i],j};
if(ans.S==-1||cmp(x0.F,ans.F)) ans=x0;
}
mark[ans.S]=1;
p[i]=ans.S;
cout<<ans.F.F<<" "<<ans.F.S<<'\n';
}
FOR(i,1,n) if(!mark[i]) p[n]=i;
FOR(i,1,n) cout<<p[i]<<" "; cout<<'\n';
return 0;
}
Compilation message
naan.cpp: In function 'int32_t main()':
naan.cpp:8:20: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
8 | #define FOR(i,a,b) for(int i=a;i<=b;i++)
| ^~~
naan.cpp:111:2: note: in expansion of macro 'FOR'
111 | FOR(i,1,n) cout<<p[i]<<" "; cout<<'\n';
| ^~~
naan.cpp:111:30: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
111 | FOR(i,1,n) cout<<p[i]<<" "; cout<<'\n';
| ^~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
2 ms |
332 KB |
Output is correct |
3 |
Correct |
2 ms |
332 KB |
Output is correct |
4 |
Correct |
3 ms |
332 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
332 KB |
Output is correct |
9 |
Correct |
1 ms |
204 KB |
Output is correct |
10 |
Correct |
1 ms |
332 KB |
Output is correct |
11 |
Correct |
2 ms |
332 KB |
Output is correct |
12 |
Correct |
2 ms |
332 KB |
Output is correct |
13 |
Correct |
2 ms |
332 KB |
Output is correct |
14 |
Correct |
2 ms |
332 KB |
Output is correct |
15 |
Correct |
2 ms |
332 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
332 KB |
Output is correct |
2 |
Correct |
2 ms |
332 KB |
Output is correct |
3 |
Correct |
3 ms |
332 KB |
Output is correct |
4 |
Correct |
5 ms |
332 KB |
Output is correct |
5 |
Correct |
3 ms |
332 KB |
Output is correct |
6 |
Correct |
2 ms |
332 KB |
Output is correct |
7 |
Correct |
1 ms |
332 KB |
Output is correct |
8 |
Correct |
2 ms |
332 KB |
Output is correct |
9 |
Correct |
5 ms |
332 KB |
Output is correct |
10 |
Correct |
6 ms |
332 KB |
Output is correct |
11 |
Correct |
3 ms |
332 KB |
Output is correct |
12 |
Correct |
1 ms |
204 KB |
Output is correct |
13 |
Correct |
3 ms |
332 KB |
Output is correct |
14 |
Correct |
5 ms |
332 KB |
Output is correct |
15 |
Correct |
5 ms |
332 KB |
Output is correct |
16 |
Correct |
5 ms |
332 KB |
Output is correct |
17 |
Correct |
5 ms |
332 KB |
Output is correct |
18 |
Correct |
6 ms |
332 KB |
Output is correct |
19 |
Correct |
6 ms |
332 KB |
Output is correct |
20 |
Correct |
5 ms |
332 KB |
Output is correct |
21 |
Correct |
6 ms |
420 KB |
Output is correct |
22 |
Correct |
5 ms |
332 KB |
Output is correct |
23 |
Correct |
0 ms |
204 KB |
Output is correct |
24 |
Correct |
4 ms |
332 KB |
Output is correct |
25 |
Correct |
3 ms |
332 KB |
Output is correct |
26 |
Correct |
2 ms |
332 KB |
Output is correct |
27 |
Correct |
5 ms |
388 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
204 KB |
Output is correct |
2 |
Correct |
2 ms |
332 KB |
Output is correct |
3 |
Correct |
2 ms |
332 KB |
Output is correct |
4 |
Correct |
3 ms |
332 KB |
Output is correct |
5 |
Correct |
1 ms |
332 KB |
Output is correct |
6 |
Correct |
1 ms |
204 KB |
Output is correct |
7 |
Correct |
1 ms |
332 KB |
Output is correct |
8 |
Correct |
1 ms |
332 KB |
Output is correct |
9 |
Correct |
1 ms |
204 KB |
Output is correct |
10 |
Correct |
1 ms |
332 KB |
Output is correct |
11 |
Correct |
2 ms |
332 KB |
Output is correct |
12 |
Correct |
2 ms |
332 KB |
Output is correct |
13 |
Correct |
2 ms |
332 KB |
Output is correct |
14 |
Correct |
2 ms |
332 KB |
Output is correct |
15 |
Correct |
2 ms |
332 KB |
Output is correct |
16 |
Correct |
1 ms |
332 KB |
Output is correct |
17 |
Correct |
2 ms |
332 KB |
Output is correct |
18 |
Correct |
3 ms |
332 KB |
Output is correct |
19 |
Correct |
5 ms |
332 KB |
Output is correct |
20 |
Correct |
3 ms |
332 KB |
Output is correct |
21 |
Correct |
2 ms |
332 KB |
Output is correct |
22 |
Correct |
1 ms |
332 KB |
Output is correct |
23 |
Correct |
2 ms |
332 KB |
Output is correct |
24 |
Correct |
5 ms |
332 KB |
Output is correct |
25 |
Correct |
6 ms |
332 KB |
Output is correct |
26 |
Correct |
3 ms |
332 KB |
Output is correct |
27 |
Correct |
1 ms |
204 KB |
Output is correct |
28 |
Correct |
3 ms |
332 KB |
Output is correct |
29 |
Correct |
5 ms |
332 KB |
Output is correct |
30 |
Correct |
5 ms |
332 KB |
Output is correct |
31 |
Correct |
5 ms |
332 KB |
Output is correct |
32 |
Correct |
5 ms |
332 KB |
Output is correct |
33 |
Correct |
6 ms |
332 KB |
Output is correct |
34 |
Correct |
6 ms |
332 KB |
Output is correct |
35 |
Correct |
5 ms |
332 KB |
Output is correct |
36 |
Correct |
6 ms |
420 KB |
Output is correct |
37 |
Correct |
5 ms |
332 KB |
Output is correct |
38 |
Correct |
0 ms |
204 KB |
Output is correct |
39 |
Correct |
4 ms |
332 KB |
Output is correct |
40 |
Correct |
3 ms |
332 KB |
Output is correct |
41 |
Correct |
2 ms |
332 KB |
Output is correct |
42 |
Correct |
5 ms |
388 KB |
Output is correct |
43 |
Correct |
904 ms |
7316 KB |
Output is correct |
44 |
Execution timed out |
4043 ms |
42928 KB |
Time limit exceeded |
45 |
Halted |
0 ms |
0 KB |
- |