# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
91904 | emil_physmath | Gift (IZhO18_nicegift) | C++17 | 283 ms | 30188 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 <iostream>
#include <stdio.h>
using namespace std;
const long long MAXN=1000005;
long long a[MAXN], ansL[MAXN];
int main()
{
long long n, k;
cin>>n>>k;
for (long long i=0; i<n; i++)
scanf("%lld", a+i);
if ((n*a[0])%k)
{
cout<<"-1\n";
return 0;
}
long long l=1, r=k, l_i=1, r_i=1;
long long numRep=1;
while (r_i<=a[0])
{
if (l==1 && l_i!=1)
{
numRep=a[0]/(l_i-1);
break;
}
ansL[l]++;
l=r+1;
l_i=r_i;
if (l>n)
{
l%=n;
l_i++;
}
if (l+k-1<=n)
{
r=l+k-1;
r_i=l_i;
}
else
{
r=(l+k-1)%n;
r_i=l_i+1;
}
}
long long op=0;
for (long long curL=1; curL<=n; curL++)
if (ansL[curL])
op++;
cout<<op<<'\n';
for (long long curL=1; curL<=n; curL++)
{
if (!ansL[curL]) continue;
long long tempK=k, i=curL;
printf("%lld ", numRep*ansL[curL]);
while (tempK--)
{
printf("%lld ", i);
i++;
if (i>n) i%=n;
}
printf("\n");
}
char I;
cin >> I;
return 0;
}
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... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |