Task: | Dice Cup |
Sender: | Tuukka Korhonen |
Submission time: | 2017-09-26 18:51:55 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.04 s | details |
#2 | ACCEPTED | 0.06 s | details |
#3 | ACCEPTED | 0.05 s | details |
#4 | ACCEPTED | 0.06 s | details |
#5 | ACCEPTED | 0.03 s | details |
#6 | ACCEPTED | 0.04 s | details |
#7 | ACCEPTED | 0.04 s | details |
#8 | ACCEPTED | 0.04 s | details |
#9 | ACCEPTED | 0.04 s | details |
#10 | ACCEPTED | 0.04 s | details |
#11 | ACCEPTED | 0.07 s | details |
#12 | ACCEPTED | 0.04 s | details |
#13 | ACCEPTED | 0.05 s | details |
#14 | ACCEPTED | 0.05 s | details |
#15 | ACCEPTED | 0.05 s | details |
#16 | ACCEPTED | 0.04 s | details |
#17 | ACCEPTED | 0.06 s | details |
#18 | ACCEPTED | 0.04 s | details |
#19 | ACCEPTED | 0.03 s | details |
#20 | ACCEPTED | 0.04 s | details |
#21 | ACCEPTED | 0.04 s | details |
#22 | ACCEPTED | 0.04 s | details |
#23 | ACCEPTED | 0.03 s | details |
#24 | ACCEPTED | 0.06 s | details |
#25 | ACCEPTED | 0.05 s | details |
Code
#include <bits/stdc++.h> using namespace std; typedef long double ld; typedef long long ll; typedef complex<ld> co; const ld PI=atan2((ld)0, (ld)-1); void fft(vector<co>&a, int n, int k) { vector<co> ww(n); ww[1]=co(1, 0); for (int t=0;t<k-1;t++) { co c=polar((ld)1, PI/n*(1<<(k-1-t))); int p2=(1<<t),p3=p2*2; for (int j=p2;j<p3;j++) ww[j*2+1]=(ww[j*2]=ww[j])*c; } for (int i=0;i<n;i++) { int u=0; for (int j=1;j<n;j*=2) {u*=2;if (i&j) u++;} if (i<u) swap(a[i], a[u]); } for (int l=1;l<n;l*=2) { for (int i=0;i<n;i+=l) { for (int it=0,j=i+l,w=l;it<l;it++,i++,j++) { co t=a[j]*ww[w++]; a[j]=a[i]-t; a[i]=a[i]+t; } } } } vector<ll> conv(const vector<ll>& a, const vector<ll>& b) { int as=a.size(), bs=b.size(); if (as*bs==0) return {}; int k=0; while ((1<<k)<as+bs-1) k++; int n=1<<k; vector<co> c(n+1); for (int i=0;i<n;i++) { if (i<as) c[i]=a[i]; if (i<bs) c[i]={c[i].real(), (ld)b[i]}; } fft(c, n, k); c[n]=c[0]; for (int i=0;i<=n-i;i++) { c[i]=conj(c[i]*c[i]-conj(c[n-i]*c[n-i]))*co(0,(ld)1/n/4); c[n-i]=conj(c[i]); } fft(c, n, k); vector<ll> r(as+bs-1); for (int i=0;i<as+bs-1;i++) r[i]=round(c[i].real()); return r; } int main() { int n,m; cin>>n>>m; vector<ll> a(n+1); vector<ll> b(m+1); for (int i=1;i<=n;i++) a[i]=1; for (int i=1;i<=m;i++) b[i]=1; auto c=conv(a, b); ll ma=0; for (int i=0;i<(int)c.size();i++){ ma=max(ma, c[i]); } for (int i=0;i<(int)c.size();i++){ if (c[i]==ma) cout<<i<<endl; } }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
4 4 |
correct output |
---|
5 |
user output |
---|
5 |
Test 2
Verdict: ACCEPTED
input |
---|
4 6 |
correct output |
---|
5 6 7 |
user output |
---|
5 6 7 |
Test 3
Verdict: ACCEPTED
input |
---|
4 7 |
correct output |
---|
5 6 7 8 |
user output |
---|
5 6 7 8 |
Test 4
Verdict: ACCEPTED
input |
---|
4 12 |
correct output |
---|
5 6 7 8 9 ... |
user output |
---|
5 6 7 8 9 ... |
Test 5
Verdict: ACCEPTED
input |
---|
4 20 |
correct output |
---|
5 6 7 8 9 ... |
user output |
---|
5 6 7 8 9 ... |
Test 6
Verdict: ACCEPTED
input |
---|
6 4 |
correct output |
---|
5 6 7 |
user output |
---|
5 6 7 |
Test 7
Verdict: ACCEPTED
input |
---|
6 6 |
correct output |
---|
7 |
user output |
---|
7 |
Test 8
Verdict: ACCEPTED
input |
---|
6 7 |
correct output |
---|
7 8 |
user output |
---|
7 8 |
Test 9
Verdict: ACCEPTED
input |
---|
6 12 |
correct output |
---|
7 8 9 10 11 ... |
user output |
---|
7 8 9 10 11 ... |
Test 10
Verdict: ACCEPTED
input |
---|
6 20 |
correct output |
---|
7 8 9 10 11 ... |
user output |
---|
7 8 9 10 11 ... |
Test 11
Verdict: ACCEPTED
input |
---|
7 4 |
correct output |
---|
5 6 7 8 |
user output |
---|
5 6 7 8 |
Test 12
Verdict: ACCEPTED
input |
---|
7 6 |
correct output |
---|
7 8 |
user output |
---|
7 8 |
Test 13
Verdict: ACCEPTED
input |
---|
7 7 |
correct output |
---|
8 |
user output |
---|
8 |
Test 14
Verdict: ACCEPTED
input |
---|
7 12 |
correct output |
---|
8 9 10 11 12 ... |
user output |
---|
8 9 10 11 12 ... |
Test 15
Verdict: ACCEPTED
input |
---|
7 20 |
correct output |
---|
8 9 10 11 12 ... |
user output |
---|
8 9 10 11 12 ... |
Test 16
Verdict: ACCEPTED
input |
---|
12 4 |
correct output |
---|
5 6 7 8 9 ... |
user output |
---|
5 6 7 8 9 ... |
Test 17
Verdict: ACCEPTED
input |
---|
12 6 |
correct output |
---|
7 8 9 10 11 ... |
user output |
---|
7 8 9 10 11 ... |
Test 18
Verdict: ACCEPTED
input |
---|
12 7 |
correct output |
---|
8 9 10 11 12 ... |
user output |
---|
8 9 10 11 12 ... |
Test 19
Verdict: ACCEPTED
input |
---|
12 12 |
correct output |
---|
13 |
user output |
---|
13 |
Test 20
Verdict: ACCEPTED
input |
---|
12 20 |
correct output |
---|
13 14 15 16 17 ... |
user output |
---|
13 14 15 16 17 ... |
Test 21
Verdict: ACCEPTED
input |
---|
20 4 |
correct output |
---|
5 6 7 8 9 ... |
user output |
---|
5 6 7 8 9 ... |
Test 22
Verdict: ACCEPTED
input |
---|
20 6 |
correct output |
---|
7 8 9 10 11 ... |
user output |
---|
7 8 9 10 11 ... |
Test 23
Verdict: ACCEPTED
input |
---|
20 7 |
correct output |
---|
8 9 10 11 12 ... |
user output |
---|
8 9 10 11 12 ... |
Test 24
Verdict: ACCEPTED
input |
---|
20 12 |
correct output |
---|
13 14 15 16 17 ... |
user output |
---|
13 14 15 16 17 ... |
Test 25
Verdict: ACCEPTED
input |
---|
20 20 |
correct output |
---|
21 |
user output |
---|
21 |