제출 #1354593

#제출 시각아이디문제언어결과실행 시간메모리
1354593gvancakDetecting Molecules (IOI16_molecules)C++20
10 / 100
0 ms344 KiB
#include <bits/stdc++.h>
#define f first
#define s second
#define pb push_back
#define mp make_pair
#define ll long long
using namespace std;
//#include "molecules.h"

vector<int> find_subset(int L, int R, vector<int> w) {
	
	vector <pair <int,int> > v;
	vector <int> ans;
	ans.clear();
	v.clear();
	for (int i=0; i<w.size(); i++) v.pb(mp(w[i],i));
	sort(v.begin(),v.end());
	if (v[0].f>R) return {};
	
	int l=0; int r=v.size();
	int sum=v[0].f;
/*	int sum1=0,k=0;
	for (int i=v.size()-1; i>=0; i--){
		sum1+=v[i].f;
		k++;
		if (sum1>=L) break;
	}
	cout<<k<<endl;*/
	for (int i=1; i<v.size(); i++){
		sum+=v[i].f;
		if (sum>=L ){
			r=i; break;
		}
	}
	
	if (sum<L) return {};
	if (sum<=R){
		for (int i=0; i<=r; i++) ans.pb(v[i].s);
		return ans;
	}
	sum-=v[r].f;
	r--;
	int st=r;
	for (int i=st; i<v.size(); i++){
		if (sum>=L && sum<=R) break;
		sum-=v[l].f; l++; r++;sum+=v[r].f; 
	}
	//cout<<sum<<endl;
	if (sum<L || sum>R) return ans;
	for (int i=l; i<=r; i++){
		ans.pb(v[i].s);
	}
	return ans;
	
}
/*
int main() {
    int n, l, u;
    assert(3 == scanf("%d %d %d", &n, &l, &u));
    std::vector<int> w(n);
    for (int i = 0; i < n; i++)
        assert(1 == scanf("%d", &w[i]));
    std::vector<int> result = find_subset(l, u, w);
    
    
    printf("%d\n", (int)result.size());
    for (int i = 0; i < (int)result.size(); i++)
        printf("%d%c", result[i], " \n"[i == (int)result.size() - 1]);
}*/
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…