답안 #428427

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
428427 2021-06-15T11:42:51 Z kshitij_sodani Shortcut (IOI16_shortcut) C++14
0 / 100
0 ms 204 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long llo;
#define a first
#define b second
#define pb push_back


#include "shortcut.h"
llo pre[1000001];
int n;
llo it[1000001];
llo ss;
llo ma[2][2];
bool check(llo mid){

	llo ma=-1e18;
	llo ma2=-1e18;
	llo ma3=-1e18;
	llo ma4=-1e18;
	llo st=1;
	for(int i=0;i<n;i++){
		for(int j=i+1;j<n;j++){
			/*if(i==1 and j==3){
				cout<<pre[j]-pre[i]+it[i]+it[j]<<":"<<endl;
			}*/
			if(pre[j]-pre[i]+it[i]+it[j]>mid){
				st=0;
				ma=max(ma,pre[i]+pre[j]+it[i]+it[j]);
				ma2=max(ma2,pre[i]-pre[j]+it[i]+it[j]);
				ma3=max(ma3,-pre[i]-pre[j]+it[i]+it[j]);
				ma4=max(ma4,-pre[i]+pre[j]+it[i]+it[j]);
			}
		}
	}
	if(st==1){
		return true;
	}
	//return false;
	ma=mid-ma-ss;
	ma=-ma;
	ma2=mid-ma2-ss;
	ma2=-ma2;
	ma3=mid-ma3-ss;
	ma4=mid-ma4-ss;
	//-pre[i]-pre[j]<=ma
	//pre[i]+pre[j]>=ma
	//pre[i]+pre[j]<=ma3

	//-pre[i]+pre[j]<=ma2
	//pre[i]-pre[j]>=ma2
	//pre[i]-pre[j]<=ma4

	llo ind=0;
	llo ind3=0;
	llo ind2=0;
	llo ind4=0;
	for(int i=1;i<n;i++){
		while(ind<i){
			if(pre[i]+pre[ind]<ma){
				ind++;

			}
			else{
				break;
			}
		}
		while(ind3<i){
			if(pre[i]+pre[ind3+1]<=ma3){
				ind3++;
			}
			else{
				break;
			}
		}
		/*while(ind2+1<i){
			if(pre[i]-pre[ind2]>ma4){
				ind2--;
			}
		}
		if(pre[])
*/

		for(int j=0;j<i;j++){
			//if(pre[i]+pre[j]>=ma){
				//if(pre[i]+pre[j]<=ma3){
					if(j>=ind and j<=ind3){
						if(pre[j]-pre[i]>=ma2){
							if(pre[j]-pre[i]<=ma4){
								return true;
							}
						}
					}
				//}
			//}
		}
	}
	

	//ma to ma3 range





	return false;



}
long long find_shortcut(int nn, std::vector<int> l, std::vector<int> d, int c)
{
	n=nn;
	pre[0]=0;
	ss=c;
	for(int i=1;i<n;i++){
		pre[i]=pre[i-1]+l[i-1];
	}

	for(int i=0;i<n;i++){
		it[i]=d[i];
	}

	llo low=-1;
	for(int i=52;i>=0;i--){
		if(check(low+(1LL<<i))==false){
			low+=(1LL<<i);
		}
	}



    return low+1;
}

Compilation message

shortcut.cpp: In function 'bool check(llo)':
shortcut.cpp:56:6: warning: unused variable 'ind2' [-Wunused-variable]
   56 |  llo ind2=0;
      |      ^~~~
shortcut.cpp:57:6: warning: unused variable 'ind4' [-Wunused-variable]
   57 |  llo ind4=0;
      |      ^~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB n = 4, incorrect answer: jury 80 vs contestant 100
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB n = 4, incorrect answer: jury 80 vs contestant 100
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB n = 4, incorrect answer: jury 80 vs contestant 100
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB n = 4, incorrect answer: jury 80 vs contestant 100
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB n = 4, incorrect answer: jury 80 vs contestant 100
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB n = 4, incorrect answer: jury 80 vs contestant 100
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB n = 4, incorrect answer: jury 80 vs contestant 100
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 204 KB n = 4, incorrect answer: jury 80 vs contestant 100
2 Halted 0 ms 0 KB -