제출 #1027787

#제출 시각아이디문제언어결과실행 시간메모리
1027787edogawa_something던전 (IOI21_dungeons)C++17
0 / 100
2 ms10844 KiB
#include "dungeons.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vii;
typedef pair<ll,ll> pii;
#define F first 
#define S second 
#define pb push_back
#define all(v) v.begin(),v.end()
const ll M=4e5+10;
const ll inf=2e18;
vector<pair<pii,int>>inc[M];
ll awin[M];
ll N;
vector<int>lose;
void init(int n,vector<int>s,vector<int>p,vector<int>w,vector<int>l) {
	N=n;
	w.pb(n),l.pb(n);
	s.pb(0);
	for(auto it:l)
	lose.pb(it);
	for(int i=n-1;i>=0;i--){
		for(auto &it:inc[w[i]])
		inc[i].pb(it);
		for(auto &it:inc[i])
		it.F.F-=s[i],it.F.S+=s[i];
		while(inc[i].size()&&inc[i].back().F.F<s[i])
		inc[i].pop_back();
		inc[i].pb({{s[i],0},i});
	}
	awin[n]=0;
	for(int i=n-1;i>=0;i--){
		awin[i]=awin[w[i]]+s[i];
	}
}

long long simulate(int x, int z){
	ll res=0;
	while(1){
		if(x==N)
		break;
		if(inc[x].back().F.F<=z+res){
			return res+awin[x]+z;
		}
		ll l=0,r=inc[x].size()-1,mid,ind;
		while(l<=r){
			mid=((l+r)>>1);
			if(inc[x][mid].F.F>z+res)
			r=mid-1,ind=mid;
			else
			l=mid+1;
		}
		res+=inc[x][ind].F.S;
		x=inc[x][ind].S;
		res+=inc[x][0].F.F;
		x=lose[x];
	}
	return res+z;
}

컴파일 시 표준 에러 (stderr) 메시지

dungeons.cpp: In function 'long long int simulate(int, int)':
dungeons.cpp:54:18: warning: 'ind' may be used uninitialized in this function [-Wmaybe-uninitialized]
   54 |   res+=inc[x][ind].F.S;
      |                  ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...