QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#399906#6751. Gameericmegalovania#WA 23ms5556kbC++201.5kb2024-04-26 19:22:172024-04-26 19:22:18

Judging History

你现在查看的是最新测评结果

  • [2024-04-26 19:22:18]
  • 评测
  • 测评结果:WA
  • 用时:23ms
  • 内存:5556kb
  • [2024-04-26 19:22:17]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;

//#define ONLINE
#ifndef ONLINE
#define debug(...) fprintf(stderr,##__VA_ARGS__)
#else
#define debug(...) ;
#endif

using LL=long long;
using PII=pair<int,int>;

template<typename T>
inline T READ(){
	T x=0; bool f=0; char c=getchar();
	while(c<'0' || c>'9') f|=(c=='-'),c=getchar();
	while(c>='0' && c<='9') x=x*10+c-'0',c=getchar();
	return f?-x:x;
}
inline int read(){return READ<int>();}
inline LL readLL(){return READ<LL>();}
mt19937 rng(chrono::system_clock::now().time_since_epoch().count());

void solve(){
	int n=read();
	LL ans=0;
	if(n==2){
		ans=min(read(),read());
	}
	else{
		vector<int>a(n),b,c(n);
		for(int i=0;i<n;i++){
			a[i]=read();
		}
		b=a;
		for(int i=0;i<n;i++){
			int x=min(b[i],b[(i+1)%n]);
			b[i]-=x,b[(i+1)%n]-=x;
			c[i]=x;
		}
		sort(c.begin(),c.end());
		LL sum=accumulate(c.begin(),c.end(),0),res;
		if(c.back()>sum/2){
			res=sum-c.back();
		}
		else{
			res=sum/2;
		}
		
		b=a;
		for(int i=n-1;i>=0;i--){
			int x=min(b[i],b[(i-1+n)%n]);
			b[i]-=x,b[(i-1+n)%n]-=x;
			c[i]=x;
		}
		sort(c.begin(),c.end());
		sum=accumulate(c.begin(),c.end(),0);
		if(c.back()>sum/2){
			res=max(res,sum-c.back());
		}
		else{
			res=max(res,sum/2);
		}
		ans=res;
	}
	cout<<ans;
}

int main(){
	solve();
	return 0;
}

/* stuff you should look for
* int overflow, array bounds
* special cases (n=1?)
* do smth instead of nothing and stay organized
* WRITE STUFF DOWN
* DON'T GET STUCK ON ONE APPROACH
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3548kb

input:

2
7 5

output:

5

result:

ok 1 number(s): "5"

Test #2:

score: -100
Wrong Answer
time: 23ms
memory: 5556kb

input:

200000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...

output:

705032704

result:

wrong answer 1st numbers differ - expected: '10000050000', found: '705032704'