Submission #2236328


Source Code Expand

#include<cstdio>
#include<iostream>

using namespace std;

#define N 100001 

int a[N];
long long cnt[N<<1];

void read(int &x)
{
	x=0; char c=getchar();
	while(!isdigit(c)) c=getchar();
	while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }
}

int main()
{
	int n,m;
	read(n); read(m);
	for(int i=1;i<=n;++i) read(a[i]);
	int l,r;
	long long tot=0;
	for(int i=1;i<n;++i)
	{
		l=a[i];
		r=a[i+1];
		if(l>r) r+=m;
		tot+=r-l;
		if(r-l>1)
		{
			cnt[l+2]++; 
			cnt[r+1]-=r-(l+2)+2;
			cnt[r+2]+=r-(l+2)+1;
		}
	}
	for(int i=1;i<=m*2;++i) cnt[i]+=cnt[i-1];
	for(int i=1;i<=m*2;++i) cnt[i]+=cnt[i-1];
	long long ans=tot;
	for(int i=1;i<=m;++i) ans=min(ans,tot-cnt[i]-cnt[i+m]);
	cout<<ans;
}

Submission Info

Submission Time
Task E - guruguru
User xxyxx
Language C++14 (GCC 5.4.1)
Score 700
Code Size 725 Byte
Status AC
Exec Time 8 ms
Memory 2176 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 2
AC × 22
Set Name Test Cases
Sample sample1.txt, sample2.txt
All half0.txt, half1.txt, half2.txt, half3.txt, half4.txt, min_m.txt, min_n.txt, mx0.txt, mx1.txt, mx2.txt, rnd0.txt, rnd1.txt, rnd2.txt, rnd3.txt, rnd4.txt, rnd5.txt, rnd6.txt, rnd7.txt, rnd8.txt, rnd9.txt, sample1.txt, sample2.txt
Case Name Status Exec Time Memory
half0.txt AC 3 ms 1152 KB
half1.txt AC 3 ms 1792 KB
half2.txt AC 5 ms 1664 KB
half3.txt AC 6 ms 1280 KB
half4.txt AC 7 ms 1920 KB
min_m.txt AC 1 ms 256 KB
min_n.txt AC 3 ms 1792 KB
mx0.txt AC 8 ms 2176 KB
mx1.txt AC 8 ms 2176 KB
mx2.txt AC 8 ms 2176 KB
rnd0.txt AC 2 ms 640 KB
rnd1.txt AC 1 ms 384 KB
rnd2.txt AC 2 ms 512 KB
rnd3.txt AC 2 ms 512 KB
rnd4.txt AC 4 ms 512 KB
rnd5.txt AC 1 ms 256 KB
rnd6.txt AC 1 ms 256 KB
rnd7.txt AC 2 ms 640 KB
rnd8.txt AC 2 ms 384 KB
rnd9.txt AC 1 ms 384 KB
sample1.txt AC 1 ms 256 KB
sample2.txt AC 1 ms 256 KB