답안 #972734

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
972734 2024-05-01T05:07:11 Z vjudge1 Detecting Molecules (IOI16_molecules) C++17
컴파일 오류
0 ms 0 KB
#include <bits/stdc++.h> 
#include <sstream> 
#include "molecules.h"
using namespace std; 
#define accepted ios_base::sync_with_stdio(false);cin.tie(nullptr); 
#define Daulbekov signed     
#define Makan main 
//#define int long long 
#define double long double 
#define pb push_back 
#define pf push_front 
#define F first 
#define S second 
const int N=2e5+7; 
const int MAX=9e18+7; 
const int INF=1e18;
vector<int>find_subset(int l,int u,vector<int>w){
	long long n=w.size();
	pair<long long,long long>w1[n+1];
	for(long long i=0;i<n;i++){
		w1[i].F=w[i];
		w1[i].S=i;
	}
	sort(w1,w1+n);
	long long l1=0,r1=0,sum=w1[0].F;
	vector<long long>ans;
	ans.clear();
	while(l1<n&&r1<n){
		if(l<=sum&&sum<=u){
			for(long long i=l1;i<=r1;i++)ans.pb(w1[i].S);
			break;
		}
		else if(l>sum){
			r1++;
			sum+=w1[r1].F;
		}
		else if(sum>u){
			sum-=w1[l1].F;
			l1++;
		}
	}
	return ans;
}
//Daulbekov Makan(){
//	accepted;
//	
//} 
// 2 2 4
// 2 2 2
// 3 2 1 3 2 1 3 3
// 3 2 1 3 2 1 

Compilation message

molecules.cpp:15:19: warning: overflow in conversion from 'double' to 'int' changes value from '9.0e+18' to '2147483647' [-Woverflow]
   15 | const int MAX=9e18+7;
      |               ~~~~^~
molecules.cpp:16:15: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+18' to '2147483647' [-Woverflow]
   16 | const int INF=1e18;
      |               ^~~~
molecules.cpp: In function 'std::vector<int> find_subset(int, int, std::vector<int>)':
molecules.cpp:42:9: error: could not convert 'ans' from 'vector<long long int>' to 'vector<int>'
   42 |  return ans;
      |         ^~~
      |         |
      |         vector<long long int>