Submission #6924813


Source Code Expand

Copy
#include <cassert>
//PXjUXeZStdX
#include <cctype>
#include <cerrno>
#include <cfloat>
#include <ciso646>
#include <climits>
#include <clocale>
#include <cmath>
#include <csetjmp>
#include <csignal>
#include <cstdarg>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <ccomplex>
#include <cfenv>
#include <cinttypes>
#include <cstdbool>
#include <cstdint>
#include <ctgmath>
#include <cwchar>
#include <cwctype>

// C++
#include <algorithm>
#include <bitset>
#include <complex>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <locale>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <typeinfo>
#include <utility>
#include <valarray>
#include <vector>
#include <array>
#include <atomic>
#include <chrono>
#include <condition_variable>
#include <forward_list>
#include <future>
#include <initializer_list>
#include <mutex>
#include <random>
#include <ratio>
#include <regex>
#include <scoped_allocator>
#include <system_error>
#include <thread>
#include <tuple>
#include <typeindex>
#include <type_traits>
#include <unordered_map>
#include <unordered_set>
// #include <boost/foreach.hpp>
// #include <boost/range/algorithm.hpp>
#define rep(i,j,k) for(int i=(int)j;i<(int)k;i++)
#define ll long long
#define Sort(v) sort(all(v))
//#define INF 1e9
#define LINF (1LL<<40)
#define END return 0
#define pb push_back
#define se second
#define fi first
#define pb push_back
#define all(v) (v).begin() , (v).end()
#define MP make_pair
#define int long long
using namespace std;
int day[12]={31,28,31,30,31,30,31,31,30,31,30,31};
// int dx[]={0,1,0,-1};
// int dy[]={1,0,-1,0};
typedef pair<int,int> P;

const long long MOD=1000000007LL;
bool isupper(char c){if('A'<=c&&c<='Z')return 1;return 0;}
bool islower(char c){if('a'<=c&&c<='z')return 1;return 0;}
bool iskaibun(string s){for(int i=0;i<s.size()/2;i++)if(s[i]!=s[s.size()-i-1])return 0;return 1;}
bool isnumber(char c){return ('0'<=c&&c<='9');}
bool isalpha(char c){return (isupper(c)||islower(c));}
template<typename T> 
void print(vector<T> v){
    for(int i=0;i<v.size();i++){
        if(i)cout<<" ";
        cout<<v[i];
    }
    cout<<endl;
}
int INF=1e18;

template<typename T>
void printendl(vector<T> v){
    for(auto date:v)cout<<date<<endl;
}

template<typename T>
void printvv(vector<vector<T>> v){
    for(int i=0;i<v.size();i++){
        for(int j=0;j<v[i].size();j++){
            if(j)cout<<" ";
            cout<<v[i][j];
        }
        cout<<endl;
    }
}
int gcd(int a,int b){
    if(a<b)swap(a,b);
    if(b==0)return a;
    else return gcd(b,a%b);
}

struct Edge{
    int to,cost;
};

struct S{
    int time,money;
};

struct UnionFind{
    vector<int> par;
    UnionFind(int n){
        par.assign(n,-1);
    }
    int root(int x){
        if(par[x]<0)return x;
        else return par[x]=root(par[x]);
    }

    bool same(int a,int b){
        return root(a)==root(b);
    }

    bool merge(int a,int b){
        a=root(a);
        b=root(b);
        if(a==b)return false;

        if(par[a]>par[b])swap(a,b);
        par[a]+=par[b];
        par[b]=a;
        return true;
    }

    int size(int x){
        return -par[root(x)];
    }
};

signed main (){
    int n;
    cin>>n;
    vector<int> a(n),b(n);
    rep(i,0,n)cin>>a[i];
    rep(i,0,n)cin>>b[i];

    int suma=0,sumb=0,S=0;
    bool ok=true;
    vector<int> t;
    int ans=0;
    rep(i,0,n){
        if(a[i]<b[i])ok=false;
        suma+=a[i];
        sumb+=b[i];
        if(a[i]<b[i]){
            S+=b[i]-a[i];
            ans++;
        }
        else if(a[i]>b[i])t.push_back(a[i]-b[i]);
    }
    sort(all(t),greater<int>());

    if(ok){
        cout<<0<<endl;
        return 0;
    }
    if(suma-sumb<0){
        cout<<-1<<endl;
        return 0;
    }
    int sum=0;
    rep(i,0,t.size()){
        ans++;
        sum+=t[i];
        if(sum>S)break;
    }
    cout<<ans<<endl;




    
    
    
    
    


}
/*

*/

Submission Info

Submission Time
Task C - Exam and Wizard
User gotutiyan
Language C++14 (Clang 3.8.0)
Score 400
Code Size 4494 Byte
Status
Exec Time 222 ms
Memory 2428 KB

Test Cases

Set Name Score / Max Score Test Cases
Sample 0 / 0 s1.txt, s2.txt, s3.txt, s4.txt
All 400 / 400 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, s1.txt, s2.txt, s3.txt, s4.txt
Case Name Status Exec Time Memory
01.txt 201 ms 2300 KB
02.txt 221 ms 2428 KB
03.txt 206 ms 2300 KB
04.txt 200 ms 2300 KB
05.txt 221 ms 2428 KB
06.txt 210 ms 2428 KB
07.txt 200 ms 2300 KB
08.txt 212 ms 2428 KB
09.txt 205 ms 2300 KB
10.txt 211 ms 2428 KB
11.txt 209 ms 2428 KB
12.txt 216 ms 2428 KB
13.txt 213 ms 2428 KB
14.txt 210 ms 2428 KB
15.txt 218 ms 2428 KB
16.txt 213 ms 2428 KB
17.txt 216 ms 2428 KB
18.txt 222 ms 2428 KB
19.txt 202 ms 2300 KB
20.txt 208 ms 2428 KB
21.txt 207 ms 2428 KB
22.txt 208 ms 2428 KB
23.txt 201 ms 1664 KB
24.txt 198 ms 1664 KB
25.txt 206 ms 1792 KB
s1.txt 1 ms 256 KB
s2.txt 1 ms 256 KB
s3.txt 1 ms 256 KB
s4.txt 1 ms 256 KB